在维护行的列中第一次出现后替换重复的值

时间:2019-08-31 08:48:41

标签: pandas

我有以下具有很多行的df:

    xx   yy   zz
A   5    4   'd.1'
B   2    2   'd.1'
C   1    1   'e.1'
D   2    2   'e.2'
E   1    5   'e.2'
.

我想删除zz列中第一个值之后的所有重复值(保留行),以获得以下输出:

    xx   yy   zz
A   5    4   'd.1'
B   2    2   '0.0'   
C   1    1   'e.1'
D   2    2   'e.2'
E   1    5   '0.0'

我该如何完成?     。     

4 个答案:

答案 0 :(得分:2)

IIUC这就是您所需要的。

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

答案 1 :(得分:1)

drop_duplicates

具有特殊功能
df = df.drop_duplicates(subset='zz', keep='first')

更新:您是否只需要在列zz中删除重复项?

df.zz.loc[df.zz == df.zz.shift()] = '0.0'

答案 2 :(得分:1)

也许这是熊猫的方法。

df.loc[df.zz == df.zz.shift(), 'zz'] = 0

答案 3 :(得分:0)

您可以使用:

is_duplicate = df.apply(df['zz'].duplicated(), axis=1)
df.where(~is_duplicate, '0.0')