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

如何修改Pandas代码适配多类型Price列的数值提取与均值计算?

解决DataFrame多类型Price列的数值提取与均值计算问题

问题说明

需要处理DataFrame的Price列,该列数据类型混杂,涵盖带字符串的价格(如USD500-750)、纯数值、空值等场景,要求提取有效数值并计算均值,同时排除年份类数值(如2019这类四位小数值)。

现有代码的问题

原代码仅能处理带字符串包裹的数值,对空值、纯数值(包括带千分位逗号的数值)完全无效:

s=df['Price'].str.findall('\d+')
df['Price'] = s.apply(lambda x: np.mean([float(i) for i in x if int(i)<2000]))

示例数据

import pandas as pd
import numpy as np

df = pd.DataFrame({
    "Price": ["Above Market Price", "USD200K as an initial price", "USD310K to 360K.", 300000, "", "150,000"]
})

修改后的代码方案

下面是适配所有数据类型的完整代码,能处理空值、纯数值、带单位/千分位的字符串,同时排除年份:

import pandas as pd
import numpy as np
import re

def process_price(price):
    # 处理空值或空字符串
    if pd.isna(price) or str(price).strip() == "":
        return ""
    
    # 统一转为字符串,先去掉千分位逗号
    price_str = str(price).replace(",", "")
    
    # 先提取带K后缀的数字(忽略大小写),再提取纯数字
    k_matches = re.findall(r'(\d+)K', price_str, re.IGNORECASE)
    matches = k_matches if k_matches else re.findall(r'\d+', price_str)
    
    valid_values = []
    for num_str in matches:
        try:
            num = int(num_str)
            # 排除年份:四位数字且在1900-2100区间
            if len(num_str) == 4 and 1900 <= num <= 2100:
                continue
            # 带K的直接取数字(已经是千单位),纯大数值转成千单位
            if k_matches:
                valid_values.append(num)
            else:
                valid_values.append(num / 1000)
        except ValueError:
            continue
    
    # 计算均值,无有效数值则返回空字符串
    if valid_values:
        mean_val = np.mean(valid_values)
        return int(mean_val) if mean_val.is_integer() else mean_val
    return ""

# 应用函数生成Output列
df['Output'] = df['Price'].apply(process_price)

代码关键点

  • 所有类型统一转字符串处理,避免类型判断混乱
  • 优先匹配带K的数值,直接提取数字作为千单位;纯数值自动除以1000对齐单位
  • 严格排除年份:四位数字且在1900-2100区间的数值直接跳过
  • 空值/空字符串直接返回空,和预期输出一致
  • 异常捕获避免数值转换报错

运行结果

执行后得到的结果完全符合预期:

print(df[['Output']])
# 输出:
   Output
0        
1     200
2     335
3     300
4        
5     150

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 10:35:36