我正在处理一个大型数据集,并且我的索引中有一些重复项。我想(也许是视觉上)检查这些重复的行是什么样的,然后决定删除哪一行。有没有一种方法可以选择具有重复索引(或任何列中重复项)的数据帧切片?
任何帮助表示赞赏。
您可以使用pandas.duplicated 然后使用 对其进行切片boolean。有关任何方法或高级功能的更多信息,我建议您始终检查其文档字符串。
好吧,这将为您解决这个问题:
df[df.duplicated('Column Name', keep=False) == True]
Run Code Online (Sandbox Code Playgroud)
在这里, keep=False将返回该列中具有重复值的所有行。
使用duplicated方法DataFrame:
df.duplicated(cols=[...])
Run Code Online (Sandbox Code Playgroud)
请参阅http://pandas.pydata.org/pandas-docs/stable/ generated/pandas.DataFrame.duplicated.html
编辑
您可以使用:
df[df.duplicated(cols=[...]) | df.duplicated(cols=[...], take_last=True)]
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用groupbyand filter:
df.groupby([...]).filter(lambda df:df.shape[0] > 1)
Run Code Online (Sandbox Code Playgroud)
或者apply:
df.groupby([...], group_keys=False).apply(lambda df:df if df.shape[0] > 1 else None)
Run Code Online (Sandbox Code Playgroud)