删除列中的重复值,保留行

时间:2018-05-03 11:40:45

标签: python pandas

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

~/python3.6
Python 3.6.5 (default, Mar 29 2018, 03:28:50) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
>>> 

我需要的是:

Col1    Col2
a        1
b        1
c        1
d        2

感谢。

1 个答案:

答案 0 :(得分:1)

使用duplicated替换值来清空字符串 - 但得到混合值 - 带字符串的数字,因此某些函数应该失败。尽管NaN已转换为integer,但最好是替换为float

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