如何在 Pandas Dataframe 中的 groupby 之后使用 assign 函数

How to use assign function after a groupby in Pandas Dataframe

我很好奇我们是否能够在 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

以下代码不起作用,因为赋值函数中使用的数据不是分组数据:

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

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

使用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

使用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