【问题标题】:pandas conditional aggregation熊猫条件聚合
【发布时间】:2015-01-03 14:01:03
【问题描述】:

我想根据 'id' 对以下数据框进行分组,然后将除 0 之外的所有 'id' 值的 'flow' 总和;那些应该保持独立。最好的解决方案是什么?

原文:

id  flow
0   1
0   1
1   1
1   1
2   1
2   1

聚合:

id  flow
0   1
0   1
1   2   
2   2

【问题讨论】:

    标签: python pandas aggregation


    【解决方案1】:

    一种方法是使用transform 重新分配新的流值,然后删除重复项:

    In [48]:
    
    df.loc[df['id'] != 0, 'flow'] = df.groupby('id')['flow'].transform('sum')
    df.drop(df[df['id']!=0].drop_duplicates().index)
    Out[48]:
       id  flow
    0   0     1
    1   0     1
    3   1     2
    5   2     2
    

    【讨论】:

      【解决方案2】:

      您可以将其分解为一个问题,即您通过除 0 之外的所有 id 进行分组,然后仅附加 0 的值。即

      df = DataFrame({"id":[0,0,1,1,2,2],"flow":[1,1,1,1,1,1]})
      df1 = df[df["id"]!=0].groupby('id').sum().reset_index()
      pd.concat([df[df['id']==0], df1]).reset_index(drop=True)
      

      【讨论】:

        猜你喜欢
        • 2022-11-28
        • 2022-12-16
        • 1970-01-01
        • 2022-12-10
        • 2018-07-05
        • 2022-01-21
        • 2021-12-14
        • 1970-01-01
        相关资源
        最近更新 更多