删除Python中类似的行

时间:2017-09-28 08:47:43

标签: python pandas dataframe

我的数据看起来像这样:

    Source   Target    Value
1  Charlie     Mac 0.6530945
2   Dennis    Fank 0.7296234
3  Charlie   Frank 0.4750875
4      Mac  Dennis 0.3961787
5  Charlie  Dennis 0.6213751
6      Mac   Frank 0.9727454
7    Frank Charlie 0.4750875
8      Mac Charlie 0.6530945
9    Frank     Mac 0.9727454
10   Frank  Dennis 0.7296234
11  Dennis     Mac 0.3961787
12  Dennis Charlie 0.6213751

我有两列名字,第三列给出一个关系值。因此第1行与第8行基本相同,第2行与第10行相同。因此,(源,目标)中的名称顺序无关紧要。我想要做的是摆脱这些不需要的行来得到这样的东西:

    Source  Target     Value
1  Charlie     Mac 0.6530945
2   Dennis    Fank 0.7296234
3  Charlie   Frank 0.4750875
4      Mac  Dennis 0.3961787
5  Charlie  Dennis 0.6213751
6      Mac   Frank 0.9727454

显然在这个简单的例子中我可以返回前六行,但我的数据集太大了。我不能只返回" Value"中的唯一项目。列,因为某些不相关的行可能具有相同的值。

1 个答案:

答案 0 :(得分:5)

df[~pd.DataFrame(np.sort(df[['Source', 'Target']], 1), df.index).duplicated()]

    Source  Target     Value
1  Charlie     Mac  0.653095
2   Dennis   Frank  0.729623
3  Charlie   Frank  0.475087
4      Mac  Dennis  0.396179
5  Charlie  Dennis  0.621375
6      Mac   Frank  0.972745