![](/img/trans.png)
[英]Pandas Dataframe - GroupBy key and keep max value on a another column
[英]Pandas for each primary key keep only the row having the max value into another column
如何为 Customer_ID 中的每个元素仅保留具有 Qta 列最大值的 Col2_ID 和 Qta 并丢弃所有其余元素?
我被困在这里:
df1 = df.groupby(["Customer_ID", "Col2_ID"]).Qta.sum()
Customer_ID Col2_ID Qta
0 536544 600
536546 1
536550 1
536553 3
536555 1
...
18283 579673 134
580872 142
18287 554065 488
570715 990
573167 108
分组后,我为每个客户设置了多个 (Col2_ID, Qta),但对于每个客户,我只想要具有最大值的 (Col2_ID, Qta)。
例如,我需要的输出不是我的程序给出的输出,而是
Customer_ID Col2_ID Qta
0 536544 600
...
18283 580872 142
18287 570715 990
我是熊猫的新手,在文档中我找不到我需要的东西
您可以将它与df.max
链接起来,它以level
作为参数。 在级别 0 时,它从每个Customer_ID
获取最大值。
df.groupby(["Customer_ID", "Col2_ID"]).Qta.sum().max(level=0)
在这里,您将索引为Customer_ID
仅获取Customer_id
和Col2_ID
作为索引试试这个。
out = df.groupby(["Customer_ID", "Col2_ID"]).Qta.sum().reset_index(level=1)
idx = out['Qta'].max(level=0).index
out.loc[idx].set_index('Col2_ID', append=True)
现在,这里的指数out
是MultiIndex
与Customer_ID
和Col2_ID
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.