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

Pandas DataFrame合并时日期自动转为日期时间格式问题

问题:合并股票收盘价时索引格式不匹配导致全NaN的原因

问题背景

我需要合并2013-02-08至2018-02-07五年间500只股票的收盘价,目标是构建以日期为索引、每列对应一只股票的DataFrame。但使用Pandas的join函数时,索引的日期格式自动转为datetime格式,导致合并后的DataFrame所有条目均为NaN。

相关代码与操作过程

1. 导入并初始化数据

import pandas as pd

df= pd.read_csv('all_stocks_5yr.csv')
df.head()

通过df['Name'].unique().shape确认数据包含505个股票名称,用pd.date_range(df['date'].min(), df['date'].max())生成目标日期范围dates,并初始化空DataFrame:

close_prices = pd.DataFrame(index=dates)  # 将索引设置为日期

2. 单只股票处理测试

提取前3只股票的收盘价生成临时DataFrame,结果符合预期:索引为日期格式,仅包含对应股票的收盘价。

symbols = df['Name'].unique() # 将股票名称存储为数组
i = 1
for symbol in symbols:
    df_sym = df[df['Name']==symbol] 
    df_tmp = pd.DataFrame(data=df_sym['close'].to_numpy() , index = df_sym['date'], columns=[symbol])

    print(df_tmp)                # 打印临时DataFrame
 
    i += 1
    if i >3: break

示例输出:

AAL
date             
2013-02-08  14.75
2013-02-11  14.46
2013-02-12  14.27
2013-02-13  14.66
2013-02-14  13.99
...           ...
2018-02-01  53.88
2018-02-02  52.10
2018-02-05  49.76
2018-02-06  51.18
2018-02-07  51.40

[1259 rows x 1 columns]

3. 合并时出现异常

使用join合并前3只股票的临时DataFrame时,结果所有条目均为NaN,且索引自动转为datetime格式:

i = 1
for symbol in symbols:
    df_sym = df[df['Name']==symbol] 
    df_tmp = pd.DataFrame(data=df_sym['close'].to_numpy() , index = df_sym['date'], columns=[symbol])
  
    close_prices = close_prices.join(df_tmp)
    i += 1
    if i >3: break

close_prices.head()

疑问

为什么合并过程中日期索引会自动转为datetime格式,进而导致索引无法匹配、合并结果全为NaN?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 05:25:53