如何将自定义函数应用于多列熊猫?

时间:2018-09-17 23:16:21

标签: python pandas function dataframe apply

提前道歉,我想问了这个问题,但我很快找不到。 我有大约10列名称分别为'col 1','col 2','col 3'... 我想对它们每个应用以下函数,并且输出应具有基本列名称+'avg'。

df['col 1 avg'] = df['col 1'].rolling(5).mean()

我可以想到循环抛出列,但是我不知道如何以最简单的方式做到这一点。感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您可以使用以下方法获得每一列的滚动平均值:

df.rolling(5).mean()

然后,您可以使用add_suffixmean添加到所有列名:

df.rolling(5).mean().add_suffix(' mean')

最后,您可以使用pd.concat与原始数据帧连接。因此,一切都一步一步完成:

new_df = pd.concat((df, df.rolling(5).mean().add_suffix(' mean')),axis=1)

示例

>>> df
   col 0  col 1  col 2
0      1      2      1
1      4      0      0
2      4      2      2
3      4      3      4
4      3      1      0
5      4      2      3
6      2      2      2
7      2      1      0
8      2      2      2
9      2      3      0

>>> new_df = pd.concat((df, df.rolling(5).mean().add_suffix(' mean')),axis=1)

>>> new_df
   col 0  col 1  col 2  col 0 mean  col 1 mean  col 2 mean
0      1      2      1         NaN         NaN         NaN
1      4      0      0         NaN         NaN         NaN
2      4      2      2         NaN         NaN         NaN
3      4      3      4         NaN         NaN         NaN
4      3      1      0         3.2         1.6         1.4
5      4      2      3         3.8         1.6         1.8
6      2      2      2         3.4         2.0         2.2
7      2      1      0         3.0         1.8         1.8
8      2      2      2         2.6         1.6         1.4
9      2      3      0         2.4         2.0         1.4