如何用Pandas统计两个同结构纯数值CSV列中差值超3的次数
解决CSV文件逐列统计差值绝对值超3的次数
直接用Pandas的矢量化操作就能高效完成需求,无需逐列循环,代码如下:
import pandas as pd # 读取两个结构一致的CSV文件 df = pd.read_csv('a.csv') de = pd.read_csv('b.csv') # 计算所有对应元素的差值绝对值 abs_diff_matrix = (df - de).abs() # 统计每列中差值绝对值超过3的行数 column_over_3_counts = (abs_diff_matrix > 3).sum(axis=0) # 转换为DataFrame格式,方便查看结果 result = column_over_3_counts.to_frame(name='差值绝对值超3的次数') print(result)
代码说明
- 差值计算:利用Pandas的广播机制,直接对两个DataFrame做减法运算后取绝对值,一次性得到所有位置的差值绝对值
- 条件筛选:通过
abs_diff_matrix > 3生成布尔矩阵,满足条件的元素标记为True(等价于数值1),不满足的为False(等价于数值0) - 按列统计:调用
sum(axis=0)对每列的布尔值求和,得到该列中符合条件的次数 - 结果格式化:将统计结果转为DataFrame,让输出更清晰易读
内容的提问来源于stack exchange,提问作者helloitsmontie
相关产品推荐
相关产品推荐

