这是我原来的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
我可以使用分组和总和来完成,然后使用熊猫进行合并,但我想知道是否有更快的方法可以做到这一点?在SQL中可以用partition
来实现,在R中我可以使用dplyr
和mutate
。熊猫有类似的东西吗?
将transform
与groupby
一起使用
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