Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果行中的一个单元格为空,则更改dataframe中的特定值_Python_Pandas_If Statement_Null - Fatal编程技术网

Python 如果行中的一个单元格为空,则更改dataframe中的特定值

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 我想设置一个条件,如果食品列中的值为空,则年龄和饮料将更改为“”(也为空) 我为此编写了

我在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
我想设置一个条件,如果食品列中的值为空,则年龄和饮料将更改为“”(也为空)

我为此编写了以下代码:

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