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

如何用pd.read_table在Python中正确加载CSV时间列数值?

解决pd.read_table读取Time列的数值格式问题

问题原因

你遇到的ValueError是因为Time列的字符串包含多个小数点(比如3.975.808),这是由于文件使用了点作为千位分隔符,直接强制转换float会失败。

解决方案

方法1:读取时针对性清洗Time列

读取时不要全局强制dtype=np.float,而是用converters参数单独处理Time列,先清理字符串再转数值:

import pandas as pd

def parse_time(time_str):
    # 移除多余的小数点,仅保留最后一个作为小数分隔符
    split_parts = time_str.split('.')
    if len(split_parts) > 1:
        integer_part = ''.join(split_parts[:-1])
        decimal_part = split_parts[-1]
        return float(f"{integer_part}.{decimal_part}")
    return float(time_str)

# 读取文件,指定converters处理Time列
df = pd.read_table(path, delimiter=";", converters={'Time': parse_time})

方法2:利用区域格式参数直接读取(更高效)

如果文件是因区域格式差异导致的(比如欧洲地区常用点作千位分隔、逗号作小数分隔),可以直接用decimal和thousands参数读取:

import pandas as pd

# 假设文件中小数分隔符是逗号,千位分隔符是点
df = pd.read_table(path, delimiter=";", decimal=',', thousands='.')

步骤3:设置Time列保留5位小数

读取完成后,用round()方法让Time列保留5位小数:

df['Time'] = df['Time'].round(5)

如果只是需要显示时保留5位小数(不修改实际数值),可以设置全局显示格式:

pd.options.display.float_format = '{:.5f}'.format

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 03:20:12