首页 > 解决方案 > 正则表达式搜索熊猫数据框中的整列

问题描述

我想从数据框中的一列中的 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))

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

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

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

我收到此错误 TypeError: 'Series' 对象是可变的,因此它们不能被散列。

标签: pythonregexpandasdataframe

解决方案


您可以使用

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

请参阅正则表达式演示详情

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

推荐阅读