熊猫:删除重复的行对

时间:2016-04-28 18:59:44

标签: python pandas dataframe duplicates

我在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. 我想删除重复的每一行(出现两次或 更多)。在这种情况下,行索引0 索引2 和 应将索引1 索引6 标识为重复项,以便我们只保留其中一个条目。
  2. 如何显示源和目标的重复项?我喜欢交叉检查“价值”是否真的总是相同的。

1 个答案:

答案 0 :(得分:5)

设置

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