微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我在熊猫中有以下数据框:

>>>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:DataFrame的真值不明确。使用空 a.bool(),a.item(),a.any()或a.all()。

我在([但没有帮助,我做错了什么吗?

解决方法

尝试使用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             
,

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

df.loc[df['food'].isna(),['age','beverage']] = ''

     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             
,

您可以使用 np.where

cols = ['beverage','age']
arr = np.where(df['food'].isna()[:,None],'',df[cols])
#for NaN : arr = np.where(df['food'].isna()[:,np.nan,df[cols])
df[cols] = arr

     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             

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。