【问题标题】:Update Dataframe Column Value based on another column value being null using df.loc[]使用 df.loc[] 根据另一个为空的列值更新数据框列值
【发布时间】:2020-05-28 20:40:28
【问题描述】:

我知道之前有人问过类似的问题,但没有一个答案适合我的具体情况,见下文:

   dummy_1  dummy_2  dummy_3  output 
1  Yes               Yes
2           
3  Yes      Yes      
4  Yes      

我像这样更新输出列:

df.loc[df['dummy_1'].notnull() == True & df['dummy_2'].notnull() == True & df['dummy_3'].isnull(), 'output'] = 'WINNER'

这给了我这个结果:

   dummy_1  dummy_2  dummy_3  output
1  Yes               Yes         
2                             WINNER
3  Yes      Yes               
4  Yes                        

我期望的输出是:

   dummy_1  dummy_2  dummy_3  output
1  Yes               Yes      
2                             
3  Yes      Yes               WINNER
4  Yes                

这只是一个总结,请大家帮帮我。

【问题讨论】:

    标签: python pandas dataframe pandas-loc


    【解决方案1】:

    你需要用np.where将条件放在括号中:

    >>> df['output'] = np.where((  df['dummy_1'].notnull() 
                                 & df['dummy_2'].notnull() 
                                 & df['dummy_3'].isnull() ), 'WINNER', None)
    >>> df
      dummy_1 dummy_2 dummy_3  output
    1     Yes     NaN     Yes    None
    2     NaN     NaN     NaN    None
    3     Yes     Yes     NaN  WINNER
    4     Yes    None     NaN    None
    # or
    >>> df.fillna('')
      dummy_1 dummy_2 dummy_3  output
    1     Yes             Yes        
    2                                
    3     Yes     Yes          WINNER
    4     Yes                        
    

    【讨论】:

    • 谢谢 Sayandip Dutta,我会尽力让你知道
    猜你喜欢
    • 2017-11-11
    • 2019-10-14
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多