我想匹配所有以978数字开头的单元格。但是下面的代码也匹配397854
或nan
。
an_transaction_product["kniha"] = np.where(an_transaction_product["zbozi_ean"].str.contains('^978', regex=True) , 1, 0)
请问我做错了什么?这不起作用,因为.str.contains
将检查regex是否在字符串中的任何地方出现
如果你坚持使用正则表达式,.str.match
做你想要的。
但是对于这个简单的例子,.str.startswith("978")
更清晰。
除了regex,您还可以使用.loc查找以'978'开头的单元格。下面的代码将为列'A'中的单元格分配1,就像一个例子:
df.loc[df['A'].astype(str).str[:3]=='978', 'A'] = 1
注意:astype(str)将数字转换为字符串,然后str[:3]获取前3个字符,然后将其与'978'进行比较。