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

55

我有一个数据框,想要计算一个新列的平均工资,这个平均工资是salary_1, salary_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

我该如何以最有效的方式在pandas中完成这个任务?实际上我还有很多列,不想一个一个地写。

类似于这样:

      salary_1     salary_2    salary_3     salary_mean
0        230           235        210     (230+235+210)/3
1        345           375        385       ...
2        222           292        260       ...

您想将结果添加为新列吗? - cs95
是的,我想要在一个新列中得到结果。 - Carmen Pérez Carrillo
2个回答

83
使用 .mean。通过指定轴,您可以沿行或列计算平均值。
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

如果您只想要几个的平均值,您可以选择这些列。例如:

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

50

下面展示了一个简单的解决此问题的方法:

col = df.loc[: , "salary_1":"salary_3"]

"salary_1" 是起始列的名称,而 "salary_3" 是结束列的名称。

df['salary_mean'] = col.mean(axis=1)
df

这将为您提供一个新的数据框,其中包含一个显示所有其他列的平均值的新列 当您有一大堆列需要处理时,这种方法非常有帮助,也可在仅对某些选定列执行操作时提供帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接