Pandas-根据数据框上的多个条件操作列

时间:2018-08-29 09:45:28

标签: pandas dataframe

我有一个Pandas数据框,其中有两列,列水果的值为0或1,另一列为qty,缺少带有浮点值的值。

现在,我需要用某种条件覆盖qty列,例如,如果水果列的值为1,而缺少qty列,则将qty列替换为0,否则与qty的值相同。

感谢您的帮助。

致谢,
Dj

2 个答案:

答案 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)