在pandas中选择具有重复观察的行
我正在处理一个很大的数据集,发现里面有一些重复的记录。我想看看这些重复的行是什么样的,然后决定要删除哪一行。有没有办法让我选出那些有重复索引(或者在任何列中有重复值)的数据部分呢?
任何帮助都非常感谢。
2 个回答
5
使用 DataFrame
的 duplicated
方法:
df.duplicated(cols=[...])
可以查看这个链接了解更多信息:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.duplicated.html
编辑
你还可以使用:
df[df.duplicated(cols=[...]) | df.duplicated(cols=[...], take_last=True)]
或者,你可以使用 groupby
和 filter
:
df.groupby([...]).filter(lambda df:df.shape[0] > 1)
或者使用 apply
:
df.groupby([...], group_keys=False).apply(lambda df:df if df.shape[0] > 1 else None)
9
你可以使用 pandas.duplicated
这个功能,然后用一个 布尔值
来筛选数据。如果你想了解更多关于任何方法或高级功能的信息,建议你查看它的 文档说明。
这样做就能解决你的问题:
df[df.duplicated('Column Name', keep=False) == True]
在这里,keep=False 会返回所有在那个列中有重复值的行。