python - Pandas :删除重复的行对

标签 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. 如何显示源和目标的重复项?我喜欢反复检查“值”是否真的始终相同。

最佳答案

设置

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() 返回复制内容的 bool 掩码

df.drop_duplicates() 删除重复的行

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

关于python - Pandas :删除重复的行对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36923322/

相关文章:

python - 在 bash 中调用一个 python 进程,然后将输出捕获到一个变量中

Python:模拟实例的问题

python - 合并两个 pandas 数据框,其中一个是另一个的子集(或仅填充列的子集)

Python:如果所选列为空,则从 Pandas Dataframe 中删除行

python - 根据条件转换数据框的列

r - 如何获取每个类别的计数

python - 使用 Pandas 的独特连接数据框

python - 如何在不使用 Django 中的 DeleteView 的情况下删除特定歌曲并从专辑列表中编辑歌曲信息?

Python Pandas - 如何从序列创建数据框

r - 使用带有索引的矩阵从数据框中选择多个值