python - 在Python中使用groupby划分两个数据框

标签 python pandas dataframe pandas-groupby

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

表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的百分比通过TYPEID .

表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')`

最佳答案

您不需要groupby;您的操作更接近于合并。在这种情况下,您可以从 table1 创建系列映射:

s = table1.set_index('ID')['sum']

然后使用它在table2中进行计算:

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

关于python - 在Python中使用groupby划分两个数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50750918/

相关文章:

python - 如何为参数列表中的每个项目运行 pytest 测试

python - 我可以向量化这个Python代码吗?

python - 在 Pandas DataFrame 中查找值的更快方法?

python - 如何在 to_csv 和 read_csv 之后获得一致的数据类型?

python - Python 中的类

C++ Boost.Python : 2 problems

python - 是否可以在查询中使用切片?

python - 如何根据 Pandas 中的条件现有列创建两列?

python - 从数据框创建列表

python - 根据多行条件比较两个不同的数据帧