如何在数据帧的单个groupby操作中应用操作nth和sum
?考虑以下数据-
cust_id Qtr points_1 points_2
0 A 1 126.0095 126.009500
1 A 2 0.0000 126.009500
2 A 3 0.0000 126.009500
3 A 4 0.0000 126.009500
4 B 5 68.3600 131.364750
5 B 6 8.5751 139.939850
6 B 7 0.0000 139.939850
7 C 8 0.0000 139.939850
8 C 9 53.2800 123.249925
9 D 10 0.0000 123.249925
我可以使用来获取组中的最后一个元素
df.groupby('cust_id')['points_2'].nth(-1)
但是我想生成如下所示的输出,在该输出中,我得到一列和另一个组中最后一个元素的和。我尝试使用类似的东西:
df.groupby('cust_id').agg({'points_1' : 'sum', 'points_2' : 'nth(-1)'})
但是显然,这不是我指定nth
方法的正确方法。
我想念什么?
points_1(SUM) points_2(last_in_the_group)
A 126.0095 126.0095
B 76.93 139.93
C 53.2800 123.2499
D 0.0000 123.2499
答案 0 :(得分:3)
使用GroupBy.last
代替nth
:
df = df.groupby('cust_id').agg({'points_1' : 'sum', 'points_2' : 'last'})
print (df)
points_1 points_2
cust_id
A 126.0095 126.009500
B 76.9351 139.939850
C 53.2800 123.249925
D 0.0000 123.249925