[英]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.