【问题标题】:Pandas groupby, sum and populate original dataframePandas groupby,求和并填充原始数据框
【发布时间】:2019-03-10 01:02:45
【问题描述】:

这是我原来的df

import pandas as pd
df_1 = pd.DataFrame({'color': ['blue', 'blue', 'yellow', 'yellow'], 'count': [1,3,4,5]})

color   count   
blue    1   
blue    3   
yellow  4   
yellow  5   

我想按颜色列和总和计数列分组,然后用结果填充原始数据框。所以最终结果应该是这样的:

df_2 = pd.DataFrame({'color': ['blue', 'blue', 'yellow', 'yellow'], 'count': [1,3,4,5], 
                     'total_per_color': [4,4,9,9]})


color   count   total_per_color
blue    1       4
blue    3       4
yellow  4       9
yellow  5       9

我可以使用 groupby 和 sum 来完成,然后使用 pandas 进行合并,但我想知道是否有更快的方法来做到这一点?在 SQL 中可以使用 partition 来实现,在 R 中我可以使用 dplyrmutate。 pandas 有类似的东西吗?

【问题讨论】:

    标签: pandas group-by


    【解决方案1】:

    transformgroupby 一起使用

    df_1['total_per_color']=df_1.groupby('color')['count'].transform('sum')
    df_1
    Out[886]: 
        color  count  total_per_color
    0    blue      1                4
    1    blue      3                4
    2  yellow      4                9
    3  yellow      5                9
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-14
      • 2016-11-02
      • 2017-06-29
      • 1970-01-01
      • 2020-11-13
      • 2022-06-13
      • 2020-03-26
      相关资源
      最近更新 更多