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

如何用Python Pandas从格式不一致的列中提取指定文本?

Pandas提取Area列数字生成新列的实现方法

问题场景

现有格式不一致的Pandas数据:

AreaOwners
Bali Island: 4600John
Java Island:7200Van Hour
Hallo Island : 2400Petra

需要提取Area列中的数字,生成新列Area Number,得到目标结果:

AreaOwnersArea Number
Bali Island: 4600John4600
Java Island:7200Van Hour7200
Hallo Island : 2400Petra2400

解决方案

最可靠的方式是使用正则表达式提取数字,结合Pandas的str.extract方法,不管冒号前后的空格格式如何变化,都能精准捕获数字部分。

代码示例

import pandas as pd

# 构造示例数据集
data = {
    'Area': ['Bali Island: 4600', 'Java Island:7200', 'Hallo Island : 2400'],
    'Owners': ['John', 'Van Hour', 'Petra']
}
df = pd.DataFrame(data)

# 提取Area列中的数字并转为整数类型
df['Area Number'] = df['Area'].str.extract(r'(\d+)').astype(int)

# 输出结果
print(df)

代码说明

  • str.extract(r'(\d+)'):通过正则表达式(\d+)匹配并捕获连续的数字序列,\d+表示匹配1个或多个数字,括号用于指定捕获组,提取我们需要的内容。
  • .astype(int):将提取到的字符串类型数字转为整数,确保新列是数值格式,方便后续计算或分析。

扩展场景

如果Area列中的数字可能包含小数(比如Bali Island: 4600.5),可以将正则表达式修改为r'(\d+\.?\d*)',适配小数格式:

df['Area Number'] = df['Area'].str.extract(r'(\d+\.?\d*)').astype(float)

内容的提问来源于stack exchange,提问作者Alfin Edo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 08:10:31