pandas 包含正则表达式
pandas contains regex
我想匹配所有以 978 数字开头的单元格。但是下面的代码也匹配 397854
或 nan
。
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'进行比较。
我想匹配所有以 978 数字开头的单元格。但是下面的代码也匹配 397854
或 nan
。
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'进行比较。