繁体   English   中英

每个主键的 Pandas 仅将具有最大值的行保留到另一列中

[英]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_idCol2_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)

现在,这里的指数outMultiIndexCustomer_IDCol2_ID

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM