在 pandas 中对一列的条件进行分组并按原样获取其他列的记录

所以我的数据框看起来像这样 -


ORD_ID|TIME|VOL|VOL_DSCL|SMBL|EXP


ABC123|2020-05-18 09:01:35|30|10|CHH|2020-05-20


DEF123|2020-05-18 09:04:35|50|20|CHH|2020-06-19


ABC123|2020-05-18 09:06:45|20|10|CHH|2020-05-20


PQR333|2020-05-18 09:13:12|50|10|SSS|2020-06-19


DEF123|2020-05-18 09:24:35|20|20|CHH|2020-06-19


PQR333|2020-05-18 09:26:23|0|0|SSS|2020-06-19

我想按 ORD_ID 分组。并获取该 ORD_ID 的最后一个记录(不对其他列执行任何聚合函数)。即所需的输出是 -


ORD_ID|TIME|VOL|VOL_DSCL|SMBL|EXP


ABC123|2020-05-18 09:06:45|20|10|CHH|2020-05-20


DEF123|2020-05-18 09:24:35|20|20|CHH|2020-06-19


PQR333|2020-05-18 09:26:23|0|0|SSS|2020-06-19

如何才能实现这一目标?(因此只有 TIME 中每个唯一 ORD_ID 的最后一条记录)


慕田峪4524236
浏览 97回答 1
1回答

慕标5832272

你不需要groupby,drop_duplicates会做:df.sort_values('TIME').drop_duplicates('ORD_ID',keep='last')或者如果你真的想要 groupby:df.groupby('ORD_ID').tail(1)输出:   ORD_ID                 TIME  VOL  VOL_DSCL SMBL         EXP2  ABC123  2020-05-18 09:06:45   20        10  CHH  2020-05-204  DEF123  2020-05-18 09:24:35   20        20  CHH  2020-06-195  PQR333  2020-05-18 09:26:23    0         0  SSS  2020-06-19
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python