My dataframe A:
id groupA groupB groupC groupD groupE ...
001 0 0 0 0 0
002 0 0 0 0 0
003 0 0 0 0 0
...
数据帧B:
id value count
001 groupA 2
002 groupB 1
001 groupB 3
001 groupC 1
003 groupC 2
002 groupA 1
dfB.groupby(['id', 'value'])['count'].sum()
通过运行这个groupby,我得到:
id value
1 groupA 2
groupB 3
groupC 1
2 groupA 1
groupB 1
3 groupC 2
Name: count, dtype: int64
我试图将此结果转换为数据帧并将其映射回数据帧a,但没有成功。
我理想的数据帧输出是:
id groupA groupB groupC groupD groupE ...
001 2 3 1 0 0
002 1 1 0 0 0
003 0 0 2 0 0
...
最佳答案
您可以旋转df2并合并这两个数据帧,
df2.pivot_table(index = 'id', columns = 'value', values = 'count', aggfunc='sum').reset_index()\
.merge(df1, how = 'left').fillna(0).astype(int)
id groupA groupB groupC groupD groupE
0 1 2 3 1 0 0
1 2 1 1 0 0 0
2 3 0 0 2 0 0
你也可以对groupby做同样的事情,
df2.groupby(['id', 'value'])['count'].sum().unstack().reset_index()\
.merge(df1, how = 'left').fillna(0).astype(int)
关于python - Python-groupby sum映射到另一个数据框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54064802/