如何在两列之间删除重复项,但在各列中保留唯一值?

时间:2018-10-26 23:01:23

标签: python python-3.x pandas

我有一个看起来像这样的df;

col1     col2  
aa       aa
cc       bb
dd       dd 

如何比较同一df中的两个列,但删除重复项并在各自的列中保持唯一性?

新df:

col1     col2  
cc       bb

3 个答案:

答案 0 :(得分:2)

我们可以构造一个过滤器来检查df.col1的值是否与df.col2不同,然后进行过滤,例如:

df[df.col1 != df.col2]

例如:

>>> df = pd.DataFrame([['aa', 'aa'], ['cc', 'bb'], ['dd', 'dd']], columns=['col1', 'col2'])
>>> df
  col1 col2
0   aa   aa
1   cc   bb
2   dd   dd
>>> df[df.col1 != df.col2]
  col1 col2
1   cc   bb

我们在这里构造一个 new 数据框,但是我们可以将df设置为新数据框,例如:

df = df[df.col1 != df.col2]

答案 1 :(得分:2)

这应该可以解决问题:

df[df[col1] != df[col2]]

答案 2 :(得分:0)

如果您只想提取各列中具有相同值的行,则应该这样做。

import pandas as pd

data = {'a':[40, 30, 10],
       'b':[40, 20, 10]}
df = pd.DataFrame(data)
df = df[~(df['a']==df['b'])]

输出

>>> df
    a   b
0  10  40
2  30  10