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

Car*_*llo 11 python dataframe pandas

我有一个这样的数据框:

我想计算新的列日的平均值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
Run Code Online (Sandbox Code Playgroud)

我怎样才能以最有效的方式在熊猫中做到这一点?实际上我有更多列,我不想一个一个地写这个.

像这样的东西:

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

谢谢!

Ale*_*lex 15

使用.mean.通过指定轴,您可以获取行或列的平均值.

df['average'] = df.mean(axis=1)
df
Run Code Online (Sandbox Code Playgroud)

回报

       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
Run Code Online (Sandbox Code Playgroud)

如果您只想要几个平均值,则只能选择那些列.例如

df['average_1_3'] = df[['salary_1', 'salary_3']].mean(axis=1)
df
Run Code Online (Sandbox Code Playgroud)

回报

   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
Run Code Online (Sandbox Code Playgroud)


Mr.*_*ark 10

解决此问题的简单方法如下所示:

col = df.loc[: , "salary_1":"salary_3"]
Run Code Online (Sandbox Code Playgroud)

其中“ salary_1”是开始列名称,“ salary_3”是结束列名称

df['salary_mean'] = col.mean(axis=1)
df
Run Code Online (Sandbox Code Playgroud)

这将为您提供一个带有新列的新数据框,该列将显示所有其他列的均值。 当您拥有大量列时,此方法非常有用;当您只需要对某些选定的列而不是全部列执行时,此方法也很有用。

  • 谢谢你!这就是我要找的 (2认同)