首页 > 解决方案 > 删除列中的重复值,保留行

问题描述

我有一个类似于删除重复项的问题,但我需要保留具有重复值的行。所以本质上,我需要保留第一个值,然后用''替换它的每个重复。

Col1    Col2
a        1
b        1
c        1
d        2

我需要的是:

Col1     Col2 
a        1
b
c
d        2

谢谢。

标签: pythonpandas

解决方案


使用duplicated替换值来清空字符串 - 但得到混合值 - 带有字符串的数字,因此某些函数应该失败。更好的是替换为NaNs,尽管integers 被转换为floats。

df.loc[df['Col2'].duplicated(), 'Col2'] = '' 
#if want numeric column
#df.loc[df['Col2'].duplicated(), 'Col2'] = np.nan

更快的选择:

df['Col2'] = np.where(df['Col2'].duplicated(), '', df['Col2'])

print (df)
  Col1 Col2
0    a    1
1    b     
2    c     
3    d    2

推荐阅读