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

如何在Pandas中正确加载使用逗号作为小数分隔符的数据?

解决Pandas加载逗号作为小数分隔符的Excel数据问题

你已经尝试用decimal=","参数来处理Excel里的逗号小数分隔符,但从输出看Valor_aprovado列好像还是没被正确识别为数值类型?别着急,这里有几个可靠的解决办法:


方法1:读取后用pd.to_numeric转换目标列

很多时候,Excel里的数值会被存储为文本格式,这时候即使设置了decimal参数,pandas也没法直接把它识别为数值。这种情况下,我们可以先完整加载数据,再单独转换Valor_aprovado列:

import pandas as pd

# 先正常加载Excel数据
ano_2016_exec = pd.read_excel('emendas/emendas_executadas_autores_2016.xls', sheet_name='Sheet1')

# 将Valor_aprovado转换为数值类型,指定逗号为小数分隔符
ano_2016_exec['Valor_aprovado'] = pd.to_numeric(
    ano_2016_exec['Valor_aprovado'],
    decimal=',',
    errors='coerce'  # 可选:把无法转换的异常值设为NaN,避免报错
)

# 验证转换结果
print(ano_2016_exec['Valor_aprovado'].dtype)
ano_2016_exec.info()

方法2:读取时用converters参数自定义转换

如果你想在读取数据的阶段就完成格式转换,可以用converters参数给Valor_aprovado列指定一个自定义转换函数:

import pandas as pd

def parse_decimal(val):
    # 处理字符串格式的数值
    if isinstance(val, str):
        # 替换逗号为小数点,再转为浮点数
        return float(val.replace(',', '.'))
    # 如果已经是数值类型,直接返回
    return val

# 读取Excel时应用转换器
ano_2016_exec = pd.read_excel(
    'emendas/emendas_executadas_autores_2016.xls',
    sheet_name='Sheet1',
    converters={'Valor_aprovado': parse_decimal}
)

# 检查列类型和数据情况
ano_2016_exec.info()

额外排查提示

如果上面的方法都没生效,建议先检查你的Excel文件:

  • 确认Valor_aprovado列的单元格格式是数值格式,而非文本格式。如果是文本,先在Excel里把格式改成数值(确保小数分隔符设置为逗号)再重新读取。
  • 检查是否有单元格包含特殊字符(比如空格、换行符),可以在转换前先清理字符串:ano_2016_exec['Valor_aprovado'] = ano_2016_exec['Valor_aprovado'].astype(str).str.strip()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:35:03