我有以下数据框
df = pd.DataFrame([{'id':'a', 'val':1}, {'id':'b', 'val':2}, {'id':'c', 'val': 0}, {'id':'d', 'val':0}])
我要用最大值+1代替0
我想要的结果如下:
df = pd.DataFrame([{'id':'a', 'val':1}, {'id':'b', 'val':2}, {'id':'c', 'val': 3}, {'id':'d', 'val':4}])
我尝试了以下操作:
for _, r in df.iterrows():
if r.val == 0:
r.val = df.val.max()+1
但是,只有一种方法可以完成上述操作
答案 0 :(得分:2)
仅用boolean indexing
和DataFrame.loc
过滤0
行,并为range
分配条件True
的条件值,并加上最大值和{{1} },因为python从1
中的0
开始计数:
range