python 删除panda Dataframe 中各列的重复值,而不删除整行

ohtdti5x  于 2023-03-16  发布在  Python
关注(0)|答案(2)|浏览(141)

我想删除在任意列数的子集中重复的所有值(在下面的示例中我使用了2),而不删除整行。
Dataframe :

A   B   C
0   foo g   A
1   foo g   G
2   yes y   B
3   bar y   B

预期结果:

A   B   C
0   foo g   A
1   NaN NaN G
2   yes y   B
3   bar Nan NaN

我尝试过drop_duplicates()特性,按列将数据分组到新的 Dataframe 中,然后将它们重新追加到一起,但这有其自身的问题。
我也有tried this solutionthis one,但仍然卡住了。任何指导都将非常感谢。

fruv7luv

fruv7luv1#

在不删除整行的情况下,可以使用NaN过滤重复值。

#df : your dataframe    
for c_name in df.columns:
      duplicated = df.duplicated(c_name)
      df.loc[duplicated, [c_name]] = np.NaN
    
    print(df)

我指的是this

m1m5dgzv

m1m5dgzv2#

试试这个:

result = df.mask(df.apply(pd.Series.duplicated))
print(result)
>>>
     A    B    C
0  foo    g    A
1  NaN  NaN    G
2  yes    y    B
3  bar  NaN  NaN

相关问题