如何过滤掉列中的重复值(每行)

时间:2017-02-16 14:28:34

标签: python pandas

如何使用以下条件在数据框中用np.nan替换特定值:如果列的值在任何后续列中重复,则其首次出现应替换为np.nan

例如,

VD_1    VD_2    VD_3     VD_4
Test    Sun     Test     None
Sun     Sun     Fun      Fun
Big     Sand    Fun      Big

结果将是这一个:

VD _1   VD_2    VD_3   VD_4
None    Sun     Test   None
None    Sun     None   Fun
None    Sand    Fun    Big

我应该使用drop_duplicateskeep等于last吗?

3 个答案:

答案 0 :(得分:4)

使用:

df = df.replace({'None':np.nan})
      .apply(lambda x:x.drop_duplicates(keep='last'), axis=1)
      .reindex(columns=df.columns)

print (df)
   VD_1  VD_2  VD_3 VD_4
0   NaN   Sun  Test  NaN
1   NaN   Sun   NaN  Fun
2   NaN  Sand   Fun  Big

答案 1 :(得分:1)

首先转置数据框并使用v3 Android Quickstart。这个可以保留最后一个值。必须对每列进行此操作,然后最终将输出连接在一起。

df_t= df_item.T
clone= df_t[0].drop_duplicates(keep='last').tolist()
cltwo= df_t[1].drop_duplicates(keep='last').tolist()
cl3= df_t[2].drop_duplicates(keep='last').tolist()

print   pd.DataFrame([clone,cltwo,cl3]) 

输出

  0     1     2
0   Sun  Test  None
1   Sun   Fun  None
2  Sand   Fun   Big

答案 2 :(得分:1)

我认为这就是诀窍:

textarea