- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
您好,我是 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/
我是一名优秀的程序员,十分优秀!