pandas 包含正则表达式

pandas contains regex

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

an_transaction_product["kniha"] = np.where(an_transaction_product["zbozi_ean"].str.contains('^978', regex=True) , 1, 0)

请问我做错了什么?

这不起作用,因为 .str.contains 将检查正则表达式是否出现在字符串中的 任何地方

如果您坚持使用正则表达式,.str.match 会如您所愿。

但对于这个简单的案例 .str.startswith("978") 更清楚。

除了正则表达式,您还可以使用 .loc 来查找以“978”开头的单元格。下面的代码会将 1 分配给列 'A' 中的此类单元格,例如:

df.loc[df['A'].astype(str).str[:3]=='978', 'A'] = 1

注意:astype(str)将数字转换为字符串,然后str[:3]获取前3个字符,然后与'978'进行比较。