gpt4 book ai didi

Python 3.x pandas 如何比较重复项并删除 csv 中具有较高值的​​行?

转载 作者:太空宇宙 更新时间:2023-11-04 04:55:43 25 4
gpt4 key购买 nike

您好,我是 Python 的新手,目前使用的是 Python 3.x 版。我有大量数据需要在 csv 中过滤。我在网上搜索,很多人建议将它加载到 pandas DataFrame 中(完成)。

我的列可以定义为:"ID", "Name", "Time", "Token", "Text"

我需要在“Token”下检查任何重复项 - 这可以通过

df = df[df.Token.duplicate(keep=False)]

(如有错误请指正)

但问题是,我需要保留原始行,同时删除其他重复项。为此,有人告诉我将它与“时间”进行比较。具有最小值的“时间”将是原始的(保留),同时删除其余的重复项。

例如:

ID Name Time Token Text

1 | John | 333 | Hello | xxxx

2 | Mary | 233 | Hiiii | xxxx

3 | Jame | 222 | Hello | xxxx

4 | Kenn | 555 | Hello | xxxx

期望的输出:

2 | Mary | 233 | Hiiii | xxxx

3 | Jame | 222 | Hello | xxxx

我做了什么:

    ##compare and keep the smaller value
def dups(df):
return df[df["Time"] < df["Time"]]

df = df[df.Token.duplicate()].apply(dups)

这就是我卡住的地方!谁能帮忙?这是我第一次使用 Python 编码,非常感谢任何帮助。

最佳答案

使用sort_values + drop_duplicates:

df = df.sort_values('Time')\
.drop_duplicates('Token', keep='first').sort_index()
df

ID Name Time Token Text
1 2 Mary 233 Hiiii xxxx
2 3 Jame 222 Hello xxxx

最后的 sort_index 调用恢复原始数据框的顺序。如果要检索超出该点的单调递增索引,请调用 reset_index

关于Python 3.x pandas 如何比较重复项并删除 csv 中具有较高值的​​行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47121397/

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