在 pandas python 中水平删除重复项

Drop duplicates horizontal in pandas python

抱歉,我不知道如何删除重复值但水平。函数 drop_duplicate 没有索引参数。

所以我有一个数据框

contact phone1 phone2 phone3 phone4
1 1234 1234
2 12345 12345

我想要以下数据框:

contact phone1 phone2 phone3 phone4
1 1234
2 12345

选项 1:可以使用堆栈和重新索引

df.stack().drop_duplicates().unstack().reindex(columns=df.columns).fillna('')



  contact  phone1   phone2 phone3 phone4
0      1.0  1234.0                       
1      2.0          12345.0 

选项 2:要逐行替换重复项,请先尝试将 NaN 设为 0(df 中不存在的值)。屏蔽重复项并用''填充它们,然后将 0 替换为 NaN 以恢复 df

df.fillna(0).mask(df.apply(lambda x: x.duplicated(), axis=1)).fillna('').replace(0,np.nan)

  contact  phone1   phone2   phone3 phone4
0        1  1234.0      NaN              
1        2     NaN  12345.0 

选项 3:

实现你的结果。我们可以:

df.mask(df.apply(lambda x: x.duplicated(), axis=1)).fillna('') 



contact  phone1   phone2 phone3 phone4
0      1.0  1234.0                       
1      2.0          12345.0