Python 使用str.contains创建新列:值的长度与索引的长度不匹配
我见过许多几乎相似的问题,但我仍然没有找到正确的答案 My df有一列['Name'],包含所有类型商店的名称。我想通过在一个新的df['Type']列中给一家杂货店贴上标签'Supermarket',对它们进行分类 我首先做的是:Python 使用str.contains创建新列:值的长度与索引的长度不匹配,python,pandas,Python,Pandas,我见过许多几乎相似的问题,但我仍然没有找到正确的答案 My df有一列['Name'],包含所有类型商店的名称。我想通过在一个新的df['Type']列中给一家杂货店贴上标签'Supermarket',对它们进行分类 我首先做的是: df['Type'] = df['Naam'].str.contains('Albert') df['Type'] = df['Type'].replace({True: 'Supermarkt'}) df['Type'] = (df['Naam'].str.c
df['Type'] = df['Naam'].str.contains('Albert')
df['Type'] = df['Type'].replace({True: 'Supermarkt'})
df['Type'] = (df['Naam'].str.contains('Albert'), 'Supermarkt')
这给出了一个真的假序列
然后我做了这个:
df['Type'] = df['Naam'].str.contains('Albert')
df['Type'] = df['Type'].replace({True: 'Supermarkt'})
df['Type'] = (df['Naam'].str.contains('Albert'), 'Supermarkt')
这是可行的,但不是很聪明。。。。。在为另一家商店编写了另一行str.contains之后,['Type']中的每个值显然都再次变成了Bool
然后我做了这个:
df['Type'] = df['Naam'].str.contains('Albert')
df['Type'] = df['Type'].replace({True: 'Supermarkt'})
df['Type'] = (df['Naam'].str.contains('Albert'), 'Supermarkt')
我的想法是,我将能够重复使用这个代码,并反复使用字符串的另一部分
但是
df['Type'] = (df['Naam'].str.contains('Albert'), 'Supermarkt')
给出一个错误:
值的长度与索引的长度不匹配。我想我理解它的意思,但是我不明白为什么第一个str.contains给出了一个完整的序列,而这一个给出了一个错误
所以我的问题是:有没有办法改变df['Type']=df['Naam'].str.包含'Albert','Supermarkt',1:True变成'Supermarkt',所有的False值保持不变,或者被其他值取代
提前谢谢。你好,简
# create a selection
boolean_indexer = df['Naam'].str.contains('Albert')
# create your new column
df.loc[boolean_indexer, 'Type'] = 'Supermarkt'