You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何忽略大小写对比两个DataFrame列并保留原大小写返回差异

忽略大小写对比Pandas DataFrame列并保留原始值的差异

你可以通过以下两种方法实现需求,既忽略大小写对比差异,又保留原始数据的大小写格式:

方法一:布尔索引结合小写集合

这种方式简洁高效,适合快速筛选:

import pandas as pd

if __name__ == "__main__":
    data1={'Name':['Karan','Rohit','Sahil','Aryan']}
    data2={'Name':['karan','Rohit','Sahil']}

    df1=pd.DataFrame(data1)
    df2=pd.DataFrame(data2)

    # 将df2的名称转小写存入集合,用于快速匹配
    df2_name_lower = set(df2['Name'].str.lower())
    # 筛选df1中名称小写不在df2集合里的项,保留原始格式
    diff_result = df1[~df1['Name'].str.lower().isin(df2_name_lower)]['Name'].tolist()
    print(diff_result)  # 输出: ['Aryan']

方法二:Merge连接+匹配标记

如果需要更清晰的匹配过程记录,可以用merge方法:

import pandas as pd

if __name__ == "__main__":
    data1={'Name':['Karan','Rohit','Sahil','Aryan']}
    data2={'Name':['karan','Rohit','Sahil']}

    df1=pd.DataFrame(data1)
    df2=pd.DataFrame(data2)

    # 添加小写辅助列,用于忽略大小写的匹配
    df1['lower_name'] = df1['Name'].str.lower()
    df2['lower_name'] = df2['Name'].str.lower()

    # 左连接两个DataFrame,标记每条记录的匹配来源
    merged_df = df1.merge(df2, on='lower_name', how='left', indicator=True)
    # 筛选仅存在于df1的记录,提取原始名称
    diff_result = merged_df[merged_df['_merge'] == 'left_only']['Name_x'].tolist()
    print(diff_result)  # 输出: ['Aryan']

两种方法都能准确识别Karan和karan为匹配项,最终仅返回原始格式的Aryan,不会丢失原始数据的大小写信息。

内容的提问来源于stack exchange,提问作者Anna Ortega

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 03:23:17