Python 如果行中的一个单元格为空,则更改dataframe中的特定值
我在pandas中有以下数据帧:Python 如果行中的一个单元格为空,则更改dataframe中的特定值,python,pandas,if-statement,null,Python,Pandas,If Statement,Null,我在pandas中有以下数据帧: >>>name food beverage age 0 Ruth Burger Cola 23 1 Dina Pasta water 19 2 Joel Tuna water 28 3 Daniel null soda 30 4 Tomas null cola 10 我想设置一个条件,如果食品列中的值为空,则年龄和饮料将更改为“”(也为空) 我为此编写了
>>>name food beverage age
0 Ruth Burger Cola 23
1 Dina Pasta water 19
2 Joel Tuna water 28
3 Daniel null soda 30
4 Tomas null cola 10
我想设置一个条件,如果食品列中的值为空,则年龄和饮料将更改为“”(也为空)
我为此编写了以下代码:
if df[(df['food'].isna())]:
df['beverage']=' '
df['age']=' '
但我不断地犯错误:
ValueError:数据帧的真值不明确。使用a.empty,
a、 bool()、a.item()、a.any()或a.all()
我有([但没有帮助,我做错了什么?您可以使用:
cols = ['beverage','age']
arr = np.where(df['food'].isna()[:,None],'',df[cols])
#for NaN : arr = np.where(df['food'].isna()[:,None],np.nan,df[cols])
df[cols] = arr
您可以使用
布尔索引
根据条件指定值:
df.loc[df['food'].isna(), ['age', 'beverage']] = ''
尝试使用
mask
df[['beverage','age']] = df[['beverage','age']].mask(df['food'].isna(),'')
df
Out[86]:
name food beverage age
0 Ruth Burger Cola 23
1 Dina Pasta water 19
2 Joel Tuna water 28
3 Daniel NaN
4 Tomas NaN
name food beverage age
0 Ruth Burger Cola 23
1 Dina Pasta water 19
2 Joel Tuna water 28
3 Daniel NaN
4 Tomas NaN
df[['beverage','age']] = df[['beverage','age']].mask(df['food'].isna(),'')
df
Out[86]:
name food beverage age
0 Ruth Burger Cola 23
1 Dina Pasta water 19
2 Joel Tuna water 28
3 Daniel NaN
4 Tomas NaN