【问题标题】:change specific values in dataframe if one cell in a row is null如果一行中的一个单元格为空,则更改数据框中的特定值
【发布时间】:2020-12-31 11:31:51
【问题描述】:

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

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

【问题讨论】:

    标签: python pandas if-statement null


    【解决方案1】:

    试试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             
    

    【讨论】:

      【解决方案2】:

      您可以使用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             
      

      【讨论】:

        【解决方案3】:

        您可以使用np.where

        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
        

             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             
        

        【讨论】:

          猜你喜欢
          • 2018-01-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-30
          • 2016-05-24
          • 1970-01-01
          相关资源
          最近更新 更多