python - 正则表达式搜索熊猫数据框中的整列
问题描述
我想从数据框中的一列中的 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' 对象是可变的,因此它们不能被散列。
解决方案
您可以使用
df['code'] = df['pro_link'].str.extract(r'/(B[A-Z0-9]{9})$')
请参阅正则表达式演示。详情:
/
- 一个/
字符(
- 捕获组的开始:B
- 一个B
字符[A-Z0-9]{9}
- 九个 ASCII 大写字母或数字
)
Series.str.extract
- 捕获组结束(实际返回任何东西都是必要的)$
- 字符串结束。
推荐阅读
- oracle - 在 Oracle 上插入 AdonisJS 中的错误。这样做的正确方法是什么?
- flutter - 从 Future 函数返回值到 Flutter 中的 onPressed 方法
- python - 我可以在ride.py 生成的代码中添加我自己的代码吗?
- jquery - 响应式中断在 jQuery 网格选项卡中不起作用
- php - 使用 rest api 提交表单时正在跳过验证
- git - Git忽略yml文件
- git - 在 git 中恢复已删除的历史记录
- sql - 在相邻表中定义顺序的 SQL 查询表
- latex - 如何在带有双列的乳胶中的括号方程中拟合很长的线
- angular6 - 如何使用 Angular 7 创建 2 分钟倒数计时器?