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

数据集price列含双值,如何提取拆分后的单个元素生成新列?

解决方案

针对你遇到的price列多值提取问题,这里提供几个更可靠的方案:

方案1:利用str.split的expand参数拆分(推荐)

直接按任意空格拆分并展开成列,提取第一列后处理美元符号:

# 按任意数量空格拆分,展开为DataFrame后取第一列
no_na['Kaina'] = no_na['price'].str.split('\s+', expand=True)[0]
# 移除美元符号并转换为浮点型
no_na['Kaina'] = no_na['Kaina'].str.replace('$', '', regex=False).astype(float)

优点:无需自定义函数,Pandas原生方法效率高,自动处理多空格问题,不会截断长价格。

方案2:自定义apply函数处理边缘情况

如果存在开头/结尾空格等特殊情况,可过滤空元素后提取:

def get_first_price(price_str):
    # 拆分后过滤空字符串,取第一个有效价格片段
    valid_parts = [part for part in price_str.split(' ') if part.strip()]
    if valid_parts:
        # 移除$并转浮点型
        return float(valid_parts[0].replace('$', ''))
    return None

no_na['Kaina'] = no_na['price'].apply(get_first_price)

优点:兼容性强,能处理各种空格分布的情况,返回None处理异常值。

方案3:正则表达式精准提取

如果价格格式固定(以$开头,后跟小数),用正则直接匹配数值部分:

no_na['Kaina'] = no_na['price'].str.extract(r'^\$?(\d+\.\d+)', expand=False).astype(float)

解释:正则^\$?(\d+\.\d+)匹配开头可选的$,然后捕获小数形式的价格数值,直接提取后转浮点型,精准高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 21:18:22