Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用str.contains创建新列:值的长度与索引的长度不匹配_Python_Pandas - Fatal编程技术网

Python 使用str.contains创建新列:值的长度与索引的长度不匹配

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

我见过许多几乎相似的问题,但我仍然没有找到正确的答案

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.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'