用Python中的groupby划分两个数据帧

时间:2018-06-07 22:22:46

标签: python pandas dataframe pandas-groupby

我正在试图弄清楚如何从不同的数据集中划分两列,按公共键进行分组,以获得百分比。

表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  

我想将变量sumtable 1除以sum table 2IDTYPE分组。

目标是获取下表,表示sumTYPE之间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')`

1 个答案:

答案 0 :(得分:2)

您不需要groupby;您的操作更接近merge。在这种情况下,您可以从table1

创建一系列映射
s = table1.set_index('ID')['sum']

然后将其用于table2中的计算:

table2['sum_percent'] = table2['sum'] / table2['ID'].map(s)