【问题标题】:Getting Boolean column for value in another column panda dataframe在另一列熊猫数据框中获取布尔列的值
【发布时间】:2019-01-24 14:10:14
【问题描述】:

我有一个数据框,如果“电梯”在便利设施列中,我想创建一个名为电梯的布尔列。

此代码生成 TypeError:'float' 类型的参数不可迭代:

df['elevator'] = df['amenities'].apply(lambda x: True if 'Elevator' in x else False)

此代码生成所有错误,

df['elevator'] = 'Elevator' in df['amenities']

如果地址包含电梯,我如何才能最好地获得真/假?

谢谢。

可以使用以下代码创建数据框:

pd.DataFrame({'address': {0: '201 East 12th St',
  1: 'East 17 st',
  2: '507 W 134th St Apt 54',
  3: 'Blue Slip'},
 'amenities': {0: 'Elevator',
  1: 'Elevator',
  2: 'Laundry in Unit ; Hardwood Floors',
  3: 'Doorman ; Elevator ; Laundry in Unit ; Hardwood Floors'}})

【问题讨论】:

    标签: python-3.x pandas dataframe apply


    【解决方案1】:

    我认为您需要containsna=False 才能将NaNs 或数字转换为False

    也感谢 @jpp 提出的提高性能的想法 - 使用 regex=False

    df['elevator'] = df['amenities'].str.contains('Elevator', na=False, regex=False)
    print (df)
                     address                                          amenities  \
    0       201 East 12th St                                           Elevator   
    1             East 17 st                                           Elevator   
    2  507 W 134th St Apt 54                  Laundry in Unit ; Hardwood Floors   
    3              Blue Slip  Doorman ; Elevator ; Laundry in Unit ; Hardwoo...   
    
       elevator  
    0      True  
    1      True  
    2     False  
    3      True  
    

    【讨论】:

    • 做到了。谢谢你耶兹瑞尔。几分钟后我无法接受答案,但很快就会接受。
    猜你喜欢
    • 1970-01-01
    • 2016-08-09
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 2018-09-23
    • 2021-04-13
    • 2020-06-21
    • 2020-09-25
    相关资源
    最近更新 更多