我有一个Pandas数据框,其中有两列,列水果的值为0或1,另一列为qty,缺少带有浮点值的值。
现在,我需要用某种条件覆盖qty列,例如,如果水果列的值为1,而缺少qty列,则将qty列替换为0,否则与qty的值相同。
感谢您的帮助。
致谢,
Dj
答案 0 :(得分:0)
使用:
df = pd.DataFrame({
'qty': [np.nan,np.nan,10,23, np.nan],
'fruit': [1,0,1,0,1]
})
print (df)
qty fruit
0 NaN 1
1 NaN 0
2 10.0 1
3 23.0 0
4 NaN 1
mask = (df['fruit'] == 1) & (df['qty'].isna())
df['qty'] = np.where(mask, 0, df['qty'])
另一种解决方案:
df.loc[mask, 'qty'] = 0
df['qty'] = df['qty'].mask(mask, 0)
print (df)
qty fruit
0 0.0 1
1 NaN 0
2 10.0 1
3 23.0 0
4 0.0 1
答案 1 :(得分:0)
df1 = df[df.fruit == 1].fillna(0)
df.update(df1)
print(df)
df是您的原始数据框。
如果愿意,可以在打印df之前添加df.fruit = df.fruit.astype(int)
。