【问题标题】:How to use assign function after a groupby in Pandas Dataframe如何在 Pandas Dataframe 中的 groupby 之后使用分配函数
【发布时间】:2020-01-26 14:33:14
【问题描述】:

我很好奇我们是否能够在 Python 中的 groupby 之后使用 assign 函数。我不想通过保存分组数据然后使用分配来做到这一点。

假设我们有:

import pandas as pd

data=pd.DataFrame({'Group':['A','A','A','B','B','B'],'One':[1,12,4,5,4,3],'Two':[5,3,4,5,2,7,]})

  Group  One  Two
0     A    1    5
1     A   12    3
2     A    4    4
3     B    5    5
4     B    4    2
5     B    3    7

以下代码不起作用,因为assign函数内部使用的数据不是分组数据:

data.groupby('Group').sum().assign(one_two=data['One']/data['Two'])

预期输出:

       One  Two  one_two
Group                   
A       17   12      1.416
B       12   14      0.857

再次,我不想将分组数据分配给新数据框,然后使用分配。我想在同一行代码中执行此操作。

【问题讨论】:

    标签: python pandas grouping assign


    【解决方案1】:

    使用lambda:

    df = data.groupby('Group').sum().assign(one_two=lambda x: x['One']/x['Two'])
    print (df)
           One  Two   one_two
    Group                    
    A       17   12  1.416667
    B       12   14  0.857143
    

    【讨论】:

    • 你是最棒的。我没想到。
    【解决方案2】:

    使用DataFrame.eval

    data.groupby('Group').sum().eval('one_two = One / Two')
    

           One  Two   one_two
    Group
    A       17   12  1.416667
    B       12   14  0.857143
    

    【讨论】:

    • 这太棒了!谢谢
    猜你喜欢
    • 2019-05-25
    • 2021-10-04
    • 2023-01-08
    • 2021-03-09
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    相关资源
    最近更新 更多