如果一行中的一个单元格为空,则更改数据框中的特定值

Reu*_*eut 10 python null if-statement 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
Run Code Online (Sandbox Code Playgroud)

我想提出条件,如果食物列中的值为空,则年龄和饮料将变为“ ”(也为空),

我为此编写了此代码:

if df[(df['food'].isna())]:
  df['beverage']=' '
  df['age']=' '
Run Code Online (Sandbox Code Playgroud)

但我不断收到错误:

ValueError:DataFrame 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

我玩过 ([ 但没有帮助,我做错了什么?

Shu*_*rma 8

您可以使用boolean indexing根据条件分配值:

df.loc[df['food'].isna(), ['age', 'beverage']] = ''
Run Code Online (Sandbox Code Playgroud)
     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             
Run Code Online (Sandbox Code Playgroud)


WeN*_*Ben 7

试试 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             
Run Code Online (Sandbox Code Playgroud)