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

fre*_*rtz 13 python string series pandas

任何人都可以看到为什么这不起作用?

它试图做; 如果列名包含文本'Andy',则创建一个名为Andy的列并将该行设置为1

df.loc[df['Name'].str.contains(['Andy']),'Andy']=1
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 9

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

df.loc[df['Name'].str.contains('Andy'),'Andy'] = 1
Run Code Online (Sandbox Code Playgroud)

对于多个价值链|:

df.loc[df['Name'].str.contains('Andy|George'),'Andy'] = 1
Run Code Online (Sandbox Code Playgroud)


jpp*_*jpp 5

pd.Series.str.contains要求其pat参数为"字符序列或正则表达式",而不是列表.

只需使用布尔赋值并转换为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)
Run Code Online (Sandbox Code Playgroud)