如何使用以下条件在数据框中用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_duplicates
和keep
等于last
吗?
答案 0 :(得分:4)
使用:
replace
字符串None
到NaN
apply
drop_duplicates
reindex
列名称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