【问题标题】:Applying operations on groups without aggregating对组应用操作而不进行聚合
【发布时间】:2017-07-17 18:19:49
【问题描述】:

我想对数据框的多组应用一个操作,然后用结果填充该组的所有值。让我们以 mean 和 np.cumsum 为例和以下数据框:

df=pd.DataFrame({"a":[1,3,2,4],"b":[1,1,2,2]})

看起来像这样

   a  b
0  1  1
1  3  1
2  2  2
3  4  2

现在我想通过b 对数据框进行分组,然后在每个组中取a 的平均值,然后将np.cumsum 应用于平均值,然后将a 的所有值替换为(取决于组) 结果。

对于前三个步骤,我会这样开始

df.groupby("b").mean().apply(np.cumsum)

给了

   a
b   
1  2
2  5

但我想得到的是

   a  b
0  2  1
1  2  1
2  5  2
3  5  2

有什么好的方法可以解决这个问题的吗?

【问题讨论】:

    标签: python pandas pandas-groupby


    【解决方案1】:

    您可以通过Series 使用map

    df1 = df.groupby("b").mean().cumsum()
    print (df1)
       a
    b   
    1  2
    2  5
    
    df['a'] = df['b'].map(df1['a'])
    print (df)
       a  b
    0  2  1
    1  2  1
    2  5  2
    3  5  2
    

    【讨论】:

      猜你喜欢
      • 2020-06-10
      • 2022-01-12
      • 1970-01-01
      • 2020-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-21
      • 1970-01-01
      相关资源
      最近更新 更多