【问题标题】:Rolling window on dataframe rows Python 3数据框行上的滚动窗口 Python 3
【发布时间】:2017-10-27 19:05:59
【问题描述】:

有没有办法在数据框行上创建滚动窗口(2 个周期)并计算值的总和?

我的数据:

ID Name Value1 Value2 Value3 Value4
0   A      2       2      4      4
1   B      1       1      3      3

想要的输出:

ID Name Value1 Value2 Value3 Value4   Rol1 Rol2 Rol3
0   A      2       2      4      4       4    6    8
1   B      1       1      3      3       2    4    6

我尝试使用 df.rolling() 但只能在特定列上使用它

【问题讨论】:

    标签: python-3.x pandas


    【解决方案1】:

    您可以使用rolling,但首先使用set_index 在所有不能在函数中使用的列中,最后添加dropna 以删除所有NaNs 列:

    df1 = (df.set_index(['ID','Name'])
           .rolling(2, axis=1).sum()
           .dropna(axis=1, how='all'))
    #rename columns
    df1.columns = ['Roll{}'.format(x) for x in range(1, len(df1.columns)+1)]
    print (df1)
             Roll1  Roll2  Roll3
    ID Name                     
    0  A       4.0    6.0    8.0
    1  B       2.0    4.0    6.0
    

    最后join 输出到原始:

    df = df.join(df1, on=['ID','Name'])
    print (df)
       ID Name  Value1  Value2  Value3  Value4  Roll1  Roll2  Roll3
    0   0    A       2       2       4       4    4.0    6.0    8.0
    1   1    B       1       1       3       3    2.0    4.0    6.0
    

    【讨论】:

      猜你喜欢
      • 2016-09-23
      • 1970-01-01
      • 2019-05-07
      • 2017-04-03
      • 2022-01-04
      • 2018-01-20
      • 1970-01-01
      • 2021-12-11
      • 2021-04-02
      相关资源
      最近更新 更多