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

如何导入带千位分隔符的欧洲格式股票时间序列至Python/R?

解决欧洲格式CSV股票数据的导入问题

我帮你梳理两种可行的方案,既能保留正确的日期索引,又能把Stock1解析为浮点数:

方案一:直接导入时针对特定列处理(推荐)

问题出在全局设置thousands="."会把日期里的点也当成千位分隔符解析,直接破坏日期格式。我们可以用converters参数单独处理Stock1列,同时直接解析日期列,一步到位:

import pandas as pd

def clean_stock1(value):
    # 移除Stock1中的千位分隔符".",保留逗号作为小数分隔符
    return float(value.replace('.', ''))

# 读取CSV时指定关键参数
stock_data = pd.read_csv(
    "stock_data.csv",
    sep=";",
    decimal=",",
    converters={"Stock1": clean_stock1},  # 单独处理Stock1列
    parse_dates=["Date"],  # 自动解析日期列
    dayfirst=True  # 必须开启,因为欧洲日期格式是DD.MM.YYYY
)

# 设置日期索引
stock_data.set_index("Date", inplace=True)

这样处理的好处是不用修改原CSV文件,直接在导入时完成清洗,而且日期解析完全不受影响。

方案二:导入前预处理CSV文件

如果偏好先清理文件再导入,可以用Python的文件操作逐行修改Stock1的格式,生成干净的CSV后再导入:

import pandas as pd

# 预处理原CSV,移除Stock1的千位分隔符
with open("stock_data.csv", "r", encoding="utf-8") as in_file, open("cleaned_stock_data.csv", "w", encoding="utf-8") as out_file:
    # 先写入表头
    header = in_file.readline()
    out_file.write(header)
    
    # 逐行处理数据行
    for line in in_file:
        # 按分号拆分列
        columns = line.strip().split(";")
        # 移除Stock1中的"."
        columns[1] = columns[1].replace('.', '')
        # 重新拼接并写入新文件
        out_file.write(";".join(columns) + "\n")

# 导入清理后的CSV,此时可以正常使用所有参数
stock_data = pd.read_csv(
    "cleaned_stock_data.csv",
    sep=";",
    decimal=",",
    parse_dates=["Date"],
    dayfirst=True
)

stock_data.set_index("Date", inplace=True)

这个方案适合需要保留干净数据文件的场景,后续导入时就不用再处理格式问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:13:42