如何在 pandas 的 groupby 中比较和删除行?
How to compare and drop rows within groupby in pandas?
我有一个看起来像这样的 df:
datetime policyid score
0 1970-01-01 00:00:01.593560812 9876policyID1234567890 0
1 1970-01-01 00:00:01.593560814 9876policyID1234567890 0
2 1970-01-01 00:00:01.593560958 9876policyID1234567890 1
3 1970-01-01 00:00:01.593560964 9876policyID1234567890 1
我想按 policyid
和 score
分组,但根据相同的 policyid 和分数只保留具有最大标记的行。
我是这样做groupby的:
df.groupby(['policyid','score'])
在这一点上,我不确定如何比较行之间的时间戳并保留具有更大时间戳的行。
新的 DF 应该是这样的:
datetime policyid score
1 1970-01-01 00:00:01.593560814 9876policyID1234567890 0
3 1970-01-01 00:00:01.593560964 9876policyID1234567890 1
提前谢谢你。
您可以使用sort_values
,然后drop_duplicates
:
df=df.sort_values('datetime').drop_duplicates(['policyid','score'], keep='last')
我有一个看起来像这样的 df:
datetime policyid score
0 1970-01-01 00:00:01.593560812 9876policyID1234567890 0
1 1970-01-01 00:00:01.593560814 9876policyID1234567890 0
2 1970-01-01 00:00:01.593560958 9876policyID1234567890 1
3 1970-01-01 00:00:01.593560964 9876policyID1234567890 1
我想按 policyid
和 score
分组,但根据相同的 policyid 和分数只保留具有最大标记的行。
我是这样做groupby的:
df.groupby(['policyid','score'])
在这一点上,我不确定如何比较行之间的时间戳并保留具有更大时间戳的行。
新的 DF 应该是这样的:
datetime policyid score
1 1970-01-01 00:00:01.593560814 9876policyID1234567890 0
3 1970-01-01 00:00:01.593560964 9876policyID1234567890 1
提前谢谢你。
您可以使用sort_values
,然后drop_duplicates
:
df=df.sort_values('datetime').drop_duplicates(['policyid','score'], keep='last')