【问题标题】:Setting flag column depending on whether column contains a given string根据列是否包含给定字符串设置标志列
【发布时间】:2019-05-14 11:29:35
【问题描述】:

谁能明白为什么这不起作用?

它正在尝试做;如果列名包含文本“Andy”,则创建一个名为 Andy 的列并将该行 = 设置为 1

df.loc[df['Name'].str.contains(['Andy']),'Andy']=1

【问题讨论】:

标签: python string pandas series


【解决方案1】:

你必须删除列表,只需要字符串:

df.loc[df['Name'].str.contains('Andy'),'Andy'] = 1

|的多个值链:

df.loc[df['Name'].str.contains('Andy|Andrew'),'Andy'] = 1

【讨论】:

    【解决方案2】:

    pd.Series.str.containspat 参数需要一个“字符序列或正则表达式”,不是一个列表。

    只需使用布尔赋值并转换为int。这会将不匹配的行设置为0。例如:

    # Name includes 'Andy'
    df['Andy'] = df['Name'].str.contains('Andy').astype(int)
    
    # Name includes 'Andy' or 'Andrew'
    df['Andy'] = df['Name'].str.contains('Andy|Andrew').astype(int)
    

    【讨论】:

      猜你喜欢
      • 2016-04-15
      • 2014-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-17
      • 2017-08-20
      • 2018-10-15
      • 1970-01-01
      相关资源
      最近更新 更多