gpt4 book ai didi

python - 保留最新的值并删除旧的行( Pandas )

转载 作者:行者123 更新时间:2023-11-28 21:43:55 26 4
gpt4 key购买 nike

我在下面有一个数据框表,其中包含新值和旧值。我想在保留新值的同时删除所有旧值。

ID    Name     Time    Comment
0 Foo 12:17:37 Rand
1 Foo 12:17:37 Rand1
2 Foo 08:20:00 Rand2
3 Foo 08:20:00 Rand3
4 Bar 09:01:00 Rand4
5 Bar 09:01:00 Rand5
6 Bar 08:50:50 Rand6
7 Bar 08:50:00 Rand7

因此它应该是这样的:

ID    Name     Time    Comment
0 Foo 12:17:37 Rand
1 Foo 12:17:37 Rand1
4 Bar 09:01:00 Rand4
5 Bar 09:01:00 Rand5

我尝试使用下面的代码,但这会删除 1 个新值和 1 个旧值。

df[~df[['Time', 'Comment']].duplicated(keep='first')]

谁能提供正确的解决方案?

最佳答案

我认为您可以将此解决方案与 to_timedelta 一起使用,如果需要按 Time 列的最大值过滤:

df.Time = pd.to_timedelta(df.Time)
df = df[df.Time == df.Time.max()]
print (df)
ID Name Time Comment
0 0 Foo 12:17:37 Rand
1 1 Foo 12:17:37 Rand1

EDITed 解决方案类似,只添加了groupby:

df = df.groupby('Name', sort=False)
.apply(lambda x: x[x.Time == x.Time.max()])
.reset_index(drop=True)
print (df)
ID Name Time Comment
0 0 Foo 12:17:37 Rand
1 1 Foo 12:17:37 Rand1
2 4 Bar 09:01:00 Rand4
3 5 Bar 09:01:00 Rand5

关于python - 保留最新的值并删除旧的行( Pandas ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41564503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com