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

如何更高效地在Pandas DataFrame中对行应用筛选并检测行差异?

Pandas中高效筛选两行差异列的优化方法

你的代码可以通过减少中间步骤、简化逻辑来优化,直接比较两行元素是否不等即可,无需额外创建差值行,以下是几种更优的实现方式:

方法一:精简Series操作

import pandas as pd

data = [
    (10, 20, 30, 40, 50, 60, 70),
    (10, 30, 30, 40, 50, 60, 100)
]
df = pd.DataFrame(data, columns=["a", "b", "c", "d", "d", "f", "g"])

# 直接对比第0行和第1行的元素差异
diff_mask = df.iloc[0] != df.iloc[1]
# 筛选出存在差异的列
diff_columns = diff_mask[diff_mask]
# 输出差异列的数量
print(len(diff_columns))

方法二:一行式列索引筛选

如果只需要获取差异列的数量或列名,可以直接通过布尔索引从列名中提取:

import pandas as pd

data = [
    (10, 20, 30, 40, 50, 60, 70),
    (10, 30, 30, 40, 50, 60, 100)
]
df = pd.DataFrame(data, columns=["a", "b", "c", "d", "d", "f", "g"])

# 直接筛选差异列并获取数量
diff_count = len(df.columns[df.iloc[0] != df.iloc[1]])
print(diff_count)

优化点说明

  • 逻辑更直观:直接用!=对比两行元素,无需计算差值,对非数值类型(如字符串)也能兼容,适用性更强
  • 减少内存占用:避免创建额外的diff行和中间DataFrame(原代码中的df_1、df_2),仅通过Series或列索引操作完成
  • 执行效率更高:省去了差值计算的步骤,尤其是在数据量较大时,性能提升更明显

内容的提问来源于stack exchange,提问作者Gaurang Shah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 22:34:53