Pandas如何对DataFrame按行统计大于等于5的数值的条件平均值
解决方案
构造测试数据
import pandas as pd import numpy as np x = pd.DataFrame({ '1': [1,2,3,2,5,6,7,8,9], '2': [2,5,6,8,10,np.nan,6,np.nan,np.nan], '3': [10,10,10,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan] })
实现逐行计算≥5数值的平均值
该计算逻辑等价于Excel中=AVERAGEIF(行范围,">=5"),优先推荐向量化运算方案,性能远高于逐行循环:
# 计算结果保存为新列 avg_ge5 x['avg_ge5'] = x.where(x >= 5).mean(axis=1)
如果需要自定义扩展逻辑,也可以用apply逐行处理:
x['avg_ge5'] = x.apply(lambda row: row[row >= 5].mean(), axis=1)
说明
两种方案都会自动忽略小于5的数值以及原数据中的空值(NaN),计算结果完全符合需求。
内容的提问来源于stack exchange,提问作者ben121
相关产品推荐
相关产品推荐

