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

Python Pandas合并(append/concat)后Date列缺失问题排查

问题原因与解决方案

问题根源

nsepy.get_history返回的DataFrame中,Date是索引列而非普通数据列,而pandas.DataFrame.to_csv默认不会将索引写入CSV文件,所以最终输出的文件里看不到Date列。

解决方法

以下两种方式可解决问题,同时建议给每条数据添加股票代码标识,方便后续区分分析:

方式1:循环内处理索引并添加股票标识

修改循环内的代码,将Date索引转为普通列,同时新增Symbol列标记当前股票:

from nsepy import get_history
import pandas as pd
from datetime import date

equity_details = pd.read_csv('C:/Users/am364971/Downloads/EQUITY_SAMPLE.csv')
equity_details.rename(columns={"SYMBOL": "Symbol"}, inplace=True)

df = []

for name in equity_details.Symbol:
    try:
        data = get_history(symbol=name,
                   start=date(2023,1,1),
                   end=date(2023,2,28))
        # 将Date索引转为普通列
        data.reset_index(inplace=True)
        # 添加Symbol列标记当前股票
        data['Symbol'] = name
        df.append(data)         
    except Exception as e:
        print(f'{name} ===> {e}')

df = pd.concat(df)

# 保存时不写入默认索引
df.to_csv('C:/Data/Combined_StockPrices.csv', index=False)

方式2:合并后统一处理索引

若不需要添加股票标识,可在合并后将索引转为列再保存:

# 前面的循环代码保持不变
df = pd.concat(df)
# 将Date索引转为普通列
df.reset_index(inplace=True)
# 保存时不写入默认索引
df.to_csv('C:/Data/Combined_StockPrices.csv', index=False)

关键说明

  • reset_index()会将原索引转为普通列,这里原索引是Date,因此生成的列名就是Date。
  • to_csv时指定index=False,避免把自动生成的默认索引(0、1、2...)写入文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 02:00:13