根据列是否包含给定的字符串来设置标志列

时间:2018-12-13 09:25:59

标签: python string pandas series

谁能看到为什么这不起作用?

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

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

2 个答案:

答案 0 :(得分:9)

您必须删除列表,只需输入字符串:

get(0)

对于df.loc[df['Name'].str.contains('Andy'),'Andy'] = 1 中的多个值链:

|

答案 1 :(得分:5)

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

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

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

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