根据重复值替换列值

时间:2020-06-27 08:51:38

标签: python pandas duplicates

在我的数据集中,我有OrderID列和OrderTotal列。

我有重复的OrderID。我不想删除重复项,相反,我想保留OrderID的第一个实例的order值,并在{出现其他重复项时,将OrderTotal的值替换为0 {1}}。

这是我所做的:

OrderID

我遇到此错误:

usr / local / lib / python3.6 / dist-packages / pandas / core / ops / array_ops.py:253:FutureWarning:逐元素比较失败;而是返回标量,但将来将执行元素比较 res_values =方法(rvalues)

1 个答案:

答案 0 :(得分:0)

d={'OrderID':['a','a','a','b','b','c','c','c','d','d'],
    'OrderTotal':[2355, 1546,987,2451, 571,3859,1876, 1239,2836,2395]}
data=pd.DataFrame(data=d)
print(data)
   OrderID  OrderTotal
0        a        2355
1        a        1546
2        a         987
3        b        2451
4        b         571
5        c        3859
6        c        1876
7        c        1239
8        d        2836
9        d        2395

使用numpy.where()

duplicates=data['OrderID'].duplicated(keep='first')
data['OrderTotal']=np.where((duplicates==True), 0 ,data['OrderTotal'])

使用DataFrame.where()

duplicates=data['OrderID'].duplicated(keep='first')
data['OrderTotal']=data['OrderTotal'].where(duplicates== False, 0)

两种情况下的数据框都已更新,

print(data)
   OrderID  OrderTotal
0        a        2355
1        a           0
2        a           0
3        b        2451
4        b           0
5        c        3859
6        c           0
7        c           0
8        d        2836
9        d           0