我有一个数据框:
我希望计算一个新列,以及salary_1
,salary_2
和salary_3
的平均值。
df = pd.DataFrame({'salary_1':[230,345,222],'salary_2':[235,375,292],'salary_3':[210,385,260]})
salary_1 salary_2 salary_3
0 230 235 210
1 345 375 385
2 222 292 260
我怎样才能以最有效的方式在熊猫中做到这一点?实际上我有更多列,我不想一个一个地写这个。
这样的事情:
salary_1 salary_2 salary_3 salary_mean
0 230 235 210 (230+235+210)/3
1 345 375 385 ...
2 222 292 260 ...
谢谢!
答案 0 :(得分:9)
使用new resource options。通过指定轴,您可以获取行或列的平均值。
df['average'] = df.mean(axis=1)
df
返回
salary_1 salary_2 salary_3 average
0 230 235 210 225.000000
1 345 375 385 368.333333
2 222 292 260 258.000000
如果你只想要几个人的平均值,你可以.mean
。 E.g。
df['average_1_3'] = df[['salary_1', 'salary_3']].mean(axis=1)
df
返回
salary_1 salary_2 salary_3 average_1_3
0 230 235 210 220.0
1 345 375 385 365.0
2 222 292 260 241.0
答案 1 :(得分:5)
解决此问题的简便方法如下所示:
col = df.loc[: , "salary_1":"salary_3"]
其中“salary_1”是起始列名称,“salary_3”是结束列名称
df['salary_mean'] = col.mean(axis=1)
df
这会为您提供一个新的数据框,其中包含一个显示所有其他列的平均值的新列 当您拥有大量列时,这种方法非常有用,或者当您需要仅对某些选定的列执行时,这种方法非常有用。