繁体   English   中英

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

[英]create new column Pandas df with str.contains gives: Length of values does not match length of index

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

我的 df 有一列 ['Name'],其中包含各种商店的名称。 例如,我想通过在新列 df['Type'] 中为杂货店提供 label 'Supermarket' 来对这些进行分类。

我首先这样做:

df['Type'] = df['Naam'].str.contains('Albert')

这给出了一个真假系列。

之后我这样做了:

df['Type'] = df['Type'].replace({True: 'Supermarkt'})

这行得通,但不是很聪明......在为另一家商店写了另一行 str.contains 之后,显然 ['Type'] 中的每个值都再次成为 Bool ......

然后我这样做了:

df['Type'] = (df['Naam'].str.contains('Albert'), 'Supermarkt')

我的想法是我将能够重复使用此代码,并一遍又一遍地使用字符串的其他部分。

但.....

df['Type'] = (df['Naam'].str.contains('Albert'), 'Supermarkt')

给出一个错误:

Length of values does not match length of index 我想我明白这意味着什么,但无法弄清楚为什么第一个 str.contains() 给出了一个完整的系列,而这个给出了一个错误....

所以我的问题是:有没有办法改变df['Type'] = (df['Naam'].str.contains('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'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM