提前道歉,我想问了这个问题,但我很快找不到。 我有大约10列名称分别为'col 1','col 2','col 3'... 我想对它们每个应用以下函数,并且输出应具有基本列名称+'avg'。
df['col 1 avg'] = df['col 1'].rolling(5).mean()
我可以想到循环抛出列,但是我不知道如何以最简单的方式做到这一点。感谢您的帮助!
答案 0 :(得分:1)
您可以使用以下方法获得每一列的滚动平均值:
df.rolling(5).mean()
然后,您可以使用add_suffix
将mean
添加到所有列名:
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