【问题标题】:Pandas: Remove duplicate row pairs熊猫:删除重复的行对
【发布时间】:2016-04-29 03:51:11
【问题描述】:

我在 Py pandas 中有以下 DataFrame

    source  target  value   type
0   10  1200    0.500   Undirected
1   13  3333    0.600   Undirected
2   10  1200    0.500   Undirected
3   15  2300    0.350   Undirected
4   18  5300    0.250   Undirected
5   17  2300    0.100   Undirected
6   13  3333    0.600   Undirected
  1. 我喜欢删除重复的每一行(出现两次或 更多的)。在这种情况下,具有 Index 0Index 2 的行和 Index 1Index 6 应被识别为重复项,以便我们只保留其中一个条目。
  2. 如何显示源和目标的重复项?我喜欢交叉检查“价值”是否真的总是相同的。

【问题讨论】:

  • 只需使用.drop_duplicates().duplicated()

标签: python pandas dataframe duplicates


【解决方案1】:

设置

from StringIO import StringIO
import pandas as pd

text="""    source  target  value   type
0   10  1200    0.500   Undirected
1   13  3333    0.600   Undirected
2   10  1200    0.500   Undirected
3   15  2300    0.350   Undirected
4   18  5300    0.250   Undirected
5   17  2300    0.100   Undirected
6   13  3333    0.600   Undirected"""

df = pd.read_csv(StringIO(text), delim_whitespace=True, index_col=[0])

解决方案

print df[df.duplicated()]

   source  target  value        type
2      10    1200    0.5  Undirected
6      13    3333    0.6  Undirected

print df.drop_duplicates(keep=False)

   source  target  value        type
3      15    2300   0.35  Undirected
4      18    5300   0.25  Undirected
5      17    2300   0.10  Undirected

说明

df.duplicated() 返回复制的布尔掩码

df.drop_duplicates() 删除重复的行

keep=False 指定删除所有已重复的行,而不是保留重复行的第一行或最后一行。 pandas drop duplicates: documentation

【讨论】:

  • OP 希望删除任何重复的值,而不仅仅是删除额外的重复值
  • @EdChum thx,已修复。将keep=False 添加到drop_duplicates
猜你喜欢
  • 1970-01-01
  • 2016-01-30
  • 2021-09-05
  • 1970-01-01
  • 2013-10-28
  • 1970-01-01
  • 2021-08-31
  • 2016-02-11
  • 2019-04-19
相关资源
最近更新 更多