如何用Pandas高效提取价格区间列的上下限至独立列?
Pandas提取价格区间上下限的高效方法
先看你的示例数据集:
import pandas as pd df = pd.DataFrame({'price_range': ['€4 - €25', '€3 - €14', '€25 - €114', '€112 - €146', 'No pricing available']})
最高效的方式是用Pandas的向量化字符串操作(避免循环),步骤如下:
- 分割区间列:用
str.split()配合expand=True直接把价格区间拆成两列,注意匹配原数据里的分隔符' - '(带空格),避免分割出错。 - 清理字符并转数值:去掉欧元符号
€,用pd.to_numeric()转换为数值类型,同时通过errors='coerce'把无定价的行转为NaN,方便后续处理。
完整代码:
# 分割价格区间为上下限两列 df[['lower_price', 'upper_price']] = df['price_range'].str.split(' - ', expand=True) # 清理字符并转换为数值,异常值转为NaN df['lower_price'] = pd.to_numeric(df['lower_price'].str.strip('€'), errors='coerce') df['upper_price'] = pd.to_numeric(df['upper_price'].str.strip('€'), errors='coerce')
处理后的结果:
| price_range | lower_price | upper_price |
|---|---|---|
| €4 - €25 | 4 | 25 |
| €3 - €14 | 3 | 14 |
| €25 - €114 | 25 | 114 |
| €112 - €146 | 112 | 146 |
| No pricing available | NaN | NaN |
这种方法用的是Pandas内置的向量化操作,比手动循环效率高得多,适合处理大规模数据集。
内容的提问来源于stack exchange,提问作者FlorNeufkens
相关产品推荐
相关产品推荐

