Python:我想检查一个数据帧中的任何列的行是否有多个相同的值,如果是,用null替换重复的值
我是stackoverflow新手,请原谅我的格式化 我的数据框如下所示:Python:我想检查一个数据帧中的任何列的行是否有多个相同的值,如果是,用null替换重复的值,python,pandas,dataframe,Python,Pandas,Dataframe,我是stackoverflow新手,请原谅我的格式化 我的数据框如下所示: Col1 Col2 Col3 Col4 Col5 A B null A D A B C F C 因为在第一行中,Col4有一个重复的值,即a,所以我想用null替换它。 类似地,在第二行中,Col5有一个重复的值,我想用null替换它 最终的数据帧应该如下所示: Col1 Col2 Col3
Col1 Col2 Col3 Col4 Col5
A B null A D
A B C F C
因为在第一行中,Col4有一个重复的值,即a,所以我想用null替换它。类似地,在第二行中,Col5有一个重复的值,我想用null替换它 最终的数据帧应该如下所示:
Col1 Col2 Col3 Col4 Col5
A B null null D
A B C F null
使用:
输出:
a b c
0 A B None
1 C D None
与轴=1一起使用,用于按行处理:
df = df.apply(pd.Series.drop_duplicates, axis=1)
print (df)
Col1 Col2 Col3 Col4 Col5
0 A B NaN NaN D
1 A B C F NaN
这是一个很好的小数据帧代码。但是,对于具有约100万条记录的数据帧,“应用”功能非常慢。我还有别的办法吗?@RishabGupta-hmmm,不太容易,你能检查一下
df1=df.reset_index().melt('index')。删除重复项(['index','value'])。分配(g=lambda x:x.groupby('variable').cumcount()
,然后df2=df1.pivot('g','variable','value')
?
df = df.apply(pd.Series.drop_duplicates, axis=1)
print (df)
Col1 Col2 Col3 Col4 Col5
0 A B NaN NaN D
1 A B C F NaN