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

Pandas读取含混合小数分隔符与整数的Excel文件问题求助

解决Pandas 1.3.4读取混合小数分隔符Excel的简洁方案

核心方案

先以文本格式读取存在数值格式问题的列,再通过自定义函数统一处理分隔符并转换为float类型,彻底规避Pandas自动类型推断的缺陷。

1. 定义通用数值转换函数

该函数可兼容纯整数、点分隔符小数、逗号分隔符小数三种场景,同时处理空值和异常值:

def convert_mixed_numeric(value):
    if pd.isna(value):
        return value
    s = str(value).strip()
    if not s:
        return pd.NA
    # 统一将逗号替换为点,对齐Pandas的小数识别规则
    s = s.replace(',', '.')
    try:
        return float(s)
    except ValueError:
        # 无法转换的异常值可返回NA或原内容,根据业务需求调整
        return pd.NA

2. 批量读取并处理Excel文件

import pandas as pd
import glob

# 替换为你的Excel文件路径匹配规则
excel_paths = glob.glob('./your_excel_files/*.xlsx')
# 指定需要处理的目标列
target_columns = ['Unit selling price', 'Sales Amount']

processed_data = []
for path in excel_paths:
    # 强制目标列以字符串类型读取,避免Pandas自动识别出错
    df = pd.read_excel(path, dtype={col: str for col in target_columns})
    # 对每个目标列应用转换函数
    for col in target_columns:
        df[col] = df[col].apply(convert_mixed_numeric)
    processed_data.append(df)

# 按需合并所有处理后的表格(不需要可删除此行)
final_df = pd.concat(processed_data, ignore_index=True)

关键细节说明

  • 用dtype参数指定目标列为字符串类型读取,避免Pandas将逗号分隔的数值识别为普通字符串、纯整数识别为int类型,导致后续处理不一致
  • 转换函数通过统一替换分隔符,让所有数值格式对齐Pandas的float识别规则,纯整数会被正常转为带.0的float,不会丢失
  • 异常捕获逻辑确保个别脏数据不会中断整个批量处理流程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 09:55:23