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

如何在Pandas中筛选两行比较结果的False值并迭代处理?

解决两个同结构DataFrame的逐行差异提取问题

方法一:Pandas矢量化操作(高效推荐)

无需逐行循环,直接利用Pandas批量处理能力,先统一处理空值,生成差异掩码后提取差异值,数据量越大效率优势越明显。

完整代码

import pandas as pd

# 示例数据
df1 = pd.DataFrame({'Name': ['Adam','Sara','John'], 'Age': [22, 25, 20], 'City':['New York','',None]})
df2 = pd.DataFrame({'Name': ['Adam','Sara','John'], 'Age': [22, 19, 20], 'City':['New York',None,'New Mexico']})

# 统一填充空值,避免None与空字符串的比较误差
df1_filled = df1.fillna('')
df2_filled = df2.fillna('')

# 生成差异掩码:True表示对应位置的值不同
diff_mask = df1_filled != df2_filled

# 提取所有差异信息并整理成DataFrame
diff_records = []
for row_idx, col_mask in diff_mask.iterrows():
    # 获取当前行存在差异的列名
    diff_columns = col_mask[col_mask].index
    for col in diff_columns:
        diff_records.append({
            '行索引': row_idx,
            '列名': col,
            'df1值': df1.loc[row_idx, col],
            'df2值': df2.loc[row_idx, col]
        })

# 输出整理后的差异结果
diff_result_df = pd.DataFrame(diff_records)
print(diff_result_df)

输出结果

行索引 列名 df1值       df2值
0     1  Age    25         19
1     2 City  None  New Mexico

方法二:逐行循环实现(按需求定制)

如果坚持要逐行遍历处理,可以在循环内筛选出差异项:

完整代码

import pandas as pd

df1 = pd.DataFrame({'Name': ['Adam','Sara','John'], 'Age': [22, 25, 20], 'City':['New York','',None]})
df2 = pd.DataFrame({'Name': ['Adam','Sara','John'], 'Age': [22, 19, 20], 'City':['New York',None,'New Mexico']})

# 逐行遍历所有行
for i in range(df1.shape[0]):
    # 逐行比较,得到布尔结果(True表示值相同,False表示不同)
    row_compare = df1.loc[i].fillna('') == df2.loc[i].fillna('')
    # 筛选出结果为False的列(即差异列)
    diff_cols = row_compare[row_compare == False].index
    if len(diff_cols) > 0:
        print(f"第{i}行差异:")
        for col in diff_cols:
            print(f"  {col}: df1={df1.loc[i, col]}, df2={df2.loc[i, col]}")

输出结果

第1行差异:
  Age: df1=25, df2=19
第2行差异:
  City: df1=None, df2=New Mexico

关键说明

  • 统一填充空值是为了避免None和空字符串''被误判为不同,若需要区分这两种空值,可去掉fillna('')操作。
  • 矢量化操作是Pandas的核心优势,优先推荐方法一。

内容的提问来源于stack exchange,提问作者Mohamed Mostafa El-Sayyad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:10:51