You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Pandas的income文本列中提取首个出现的英镑价格?

解决方案

直接使用Pandas的str.extract()方法即可,该方法默认返回每行第一个符合正则规则的匹配结果,刚好匹配你提取首个英镑价格的需求:

# 正则说明:匹配£符号后,由数字、逗号、可选小数点及后续数字组成的价格内容
price_pattern = r'£([\d,]+\.?\d*)'
# 提取结果存入新列
df1['first_income'] = df1['Income'].str.extract(price_pattern)

针对你给出的示例数据,提取后得到的结果依次为:1,000000、1,000,050、15000000、520000,符合预期。

如果需要把提取到的文本价格转为可计算的数值类型,可以追加一步处理:

# 移除千位逗号后转为浮点型
df1['first_income'] = df1['first_income'].str.replace(',', '').astype(float)

原有代码问题说明

  • 第一段代码使用str.split()是按照匹配规则拆分字符串,并非提取内容,且你使用固定长度的.匹配价格,适配性极差,自然会匹配到多个英镑符号。
  • 第二段代码将整列df1['Income']直接转为字符串,相当于把所有行的内容拼接为一个长字符串再匹配,无法得到每行独立的首个价格结果。

内容的提问来源于stack exchange,提问作者Alex B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 13:36:03