如何在Python中统计指定列值相同与不同的行数?
统计两列值相同/不同行数的解决方案
你用duplicated()函数没效果是因为它的作用是检测整行或指定列组合的重复记录,不是用来逐行比较两列的值是否相等。针对你的需求,用pandas的矢量化比较操作就能高效解决,7万行的规模完全没问题:
核心实现步骤
- 用
eq()方法逐行比较两列的值是否相等,返回一个布尔型Series(相等为True,不等为False) - 对布尔Series求和,
True会被视为1,直接得到相同值的行数 - 不同值的行数可以用总行数减去相同行数,或者直接用
ne()方法(不等于)求和
完整代码示例
import pandas as pd # 加载你的数据集(替换成实际加载方式,比如read_excel等) df = pd.read_csv('your_data.csv') # 统计两列值相同的行数 same_count = df['days_on_the_market_last_broker'].eq(df['days_on_the_market_all_broker']).sum() # 统计两列值不同的行数 diff_count = df.shape[0] - same_count # 或者用ne()直接计算:diff_count = df['days_on_the_market_last_broker'].ne(df['days_on_the_market_all_broker']).sum() # 输出结果 print(f"两列值相同的行数:{same_count}") print(f"两列值不同的行数:{diff_count}")
补充说明
这种矢量化操作完全避免了循环,处理7万行数据速度极快,不会有性能问题。如果你的数据里存在缺失值(NaN),eq()会把NaN和NaN的比较结果视为False,如果需要把NaN相等也算作相同,可以先处理缺失值,或者用df['col1'].fillna(-1).eq(df['col2'].fillna(-1)).sum()这类方式调整(用一个不影响的占位值替换NaN)。
内容的提问来源于stack exchange,提问作者NiklasLP
相关产品推荐
相关产品推荐

