如何用Python Pandas从格式不一致的列中提取指定文本?
Pandas提取Area列数字生成新列的实现方法
问题场景
现有格式不一致的Pandas数据:
Area Owners Bali Island: 4600 John Java Island:7200 Van Hour Hallo Island : 2400 Petra 需要提取Area列中的数字,生成新列
Area Number,得到目标结果:
Area Owners Area Number Bali Island: 4600 John 4600 Java Island:7200 Van Hour 7200 Hallo Island : 2400 Petra 2400
解决方案
最可靠的方式是使用正则表达式提取数字,结合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
相关产品推荐
相关产品推荐

