正则表达式搜索 pandas 数据框中的整个列

San*_*too 2 python regex dataframe pandas

我想从数据帧的列中的 url 中提取B0153R2A9I。例如'http://www.example.com/zs/B0153R2A9I'

我在 Reddit 小组中找到了这段代码 -

import re
search = re.search(r'B[A-Z0-9]{9}', url)
print(search.group(0))
Run Code Online (Sandbox Code Playgroud)

虽然这似乎适用于一个链接,但当我尝试将其应用于这样的列时 -

import re
df['code'] = re.search(r'B[A-Z0-9]{9}', "", df['pro_link'])
Run Code Online (Sandbox Code Playgroud)

df['pro_link'] 列包含所有链接。df['code'] 是要创建的新列。

我收到此错误 TypeError: 'Series' 对象是可变的,因此无法对它们进行哈希处理。

Wik*_*żew 6

您可以使用

df['code'] = df['pro_link'].str.extract(r'/(B[A-Z0-9]{9})$')
Run Code Online (Sandbox Code Playgroud)

请参阅正则表达式演示细节

  • /- 一个/字符
  • (- 捕获组的开始:
    • B- 一个B字符
    • [A-Z0-9]{9}- 九个 ASCII 大写字母或数字
  • )- 捕获组的结尾(有必要Series.str.extract实际返回任何内容)
  • $- 字符串末尾。