计算新列作为其他列pandas的平均值

时间:2018-01-21 11:58:04

标签: python pandas dataframe

我有一个数据框:

我希望计算一个新列,以及salary_1salary_2salary_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       ...

谢谢!

2 个答案:

答案 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

这会为您提供一个新的数据框,其中包含一个显示所有其他列的平均值的新列 当您拥有大量列时,这种方法非常有用,或者当您需要仅对某些选定的列执行时,这种方法非常有用。