根据列是不是包含给定字符串设置标志列

Posted

技术标签:

【中文标题】根据列是不是包含给定字符串设置标志列【英文标题】: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

【问题讨论】:

如果您打算为其他名称执行此操作,请考虑 get_dummies 方法 pandas.pydata.org/pandas-docs/stable/generated/… 【参考方案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)

【讨论】:

以上是关于根据列是不是包含给定字符串设置标志列的主要内容,如果未能解决你的问题,请参考以下文章

R - 如果列包含来自向量的字符串,则将标志附加到另一列

以类似 HTML 的方式计算列宽(基于单元格内容)

如何根据包含的字符串的一部分选择列,然后在 R 中删除部分列名? (列位置可能不同)

如何编写一个 MySQL 查询,该查询返回一个临时列,其中包含与该行相关的项目是不是存在于另一个表中的标志

检查列是不是包含类型字符串(对象)

SQL - 查询字符串是不是包含列中的部分值