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

Pandas read_csv无法转换带千位与小数分隔符的数值问题

解决方法

问题出在你指定了dtype参数,这会跳过pandas对千分位/小数分隔符的解析逻辑,直接强制将原始字符串转为float,导致格式不兼容的报错。调整方案如下:

修正后的代码

import os
import pandas as pd
from datetime import datetime

filepath = 'original_data'
filename = 'Real_Verbrauch_DE_201501010000_202303042359_Viertelstunde.csv'
csv_path = os.path.join(filepath, filename)

df_original = pd.read_csv(
    csv_path, 
    sep=';', 
    thousands='.', 
    decimal=',', 
    parse_dates=['Datum'],
    date_format='%d.%m.%Y'  # 替代date_parser的推荐写法
)

# 确保目标列全部转为float类型(处理可能的异常值)
target_cols = [
    'Gesamt (Netzlast) [MWh] Originalauflösungen',
    'Residuallast [MWh] Originalauflösungen',
    'Pumpspeicher [MWh] Originalauflösungen'
]
df_original[target_cols] = df_original[target_cols].apply(pd.to_numeric, errors='coerce')

关键说明

  1. 移除dtype参数:pandas的thousands和decimal设置会自动处理1.234,56这类格式的数值,但指定dtype会绕过这个解析流程,直接尝试转换原始字符串,必然报错。
  2. 用date_format替代date_parser:这是pandas官方推荐的日期解析方式,代码更简洁且性能更优。
  3. 强制数值转换:如果读取后仍有部分值未自动转换,pd.to_numeric(errors='coerce')会将无法解析的异常值转为NaN,同时确保有效数值全部转为float类型,避免报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 00:52:40