我正在试图弄清楚如何从不同的数据集中划分两列,按公共键进行分组,以获得百分比。
表1
Index ID sum
0 100001 7
1 100002 8
2 100003 4
表2
Index ID TYPE sum
0 100001 A 7
1 100002 A 4
2 100002 B 4
3 100003 A 2
4 100003 B 2
我想将变量sum
从table 1
除以sum
table 2
,ID
和TYPE
分组。
目标是获取下表,表示sum
和TYPE
之间ID
的百分比。
表3
Index ID TYPE sum_percent
0 100001 A 1.0
1 100002 A 0.5
2 100002 B 0.5
3 100003 A 0.5
4 100003 B 0.5
我正在尝试使用一些代码来实现这个问题,就像这个问题一样,但它会抛出错误信息。似乎问题出现在groupby
声明中。
`table_1[['sum']].groupby('ID')/table_2[['sum']].groupby('ID')`
答案 0 :(得分:2)
您不需要groupby
;您的操作更接近merge
。在这种情况下,您可以从table1
:
s = table1.set_index('ID')['sum']
然后将其用于table2
中的计算:
table2['sum_percent'] = table2['sum'] / table2['ID'].map(s)