pandas包含正则表达式



我想匹配所有以978数字开头的单元格。但是下面的代码也匹配397854nan

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'进行比较。

最新更新