我有以下具有很多行的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'
我该如何完成? 。
答案 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')