我在 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
- 我喜欢删除重复的每一行(出现两次或 更多的)。在这种情况下,具有索引 0 和 索引 2 的行和 索引 1 和 索引 6 应被识别为重复项,以便我们只保留其中一个条目。
- 如何显示源和目标的重复项?我喜欢反复检查“值”是否真的始终相同。
最佳答案
设置
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/