【问题标题】:how to apply a custom function to multiple columns pandas?如何将自定义函数应用于多列熊猫?
【发布时间】:2018-09-17 23:16:20
【问题描述】:

提前道歉,我假设有人问过这个问题,但我找不到很快。 我有大约 10 列名称为 'col 1'、'col 2'、'col 3' ... 我想对它们中的每一个应用以下函数,并且输出应该具有基列名称 + 'avg'。

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

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

【问题讨论】:

  • 你可能想看看here

标签: python pandas function dataframe apply


【解决方案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

【讨论】:

    猜你喜欢
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 2013-04-20
    相关资源
    最近更新 更多