如何正确保存/加载含Datetime索引的DataFrame并完成拼接?
解决Datetime索引在CSV保存/加载及拼接中的丢失问题
问题背景
使用pd.concat([previous_df, df_test], axis=0)拼接两个带Datetime索引的DataFrame时,出现Datetime索引丢失、自动生成新索引的异常,调整join、ignore_index参数均无法解决。排查后确认根源是:从CSV加载的DataFrame丢失了原本的Datetime索引。
正确保存含Datetime索引的DataFrame到CSV
默认情况下df.to_csv()不会将DataFrame的索引写入CSV文件,要保留Datetime索引,需在保存时指定index=True,让索引作为单独一列存入CSV:
# 保存时写入Datetime索引 df.to_csv('datatest.csv', index=True)
从CSV加载时恢复Datetime索引
加载CSV时,需要指定索引列的位置(保存时索引在第0列),同时将该列解析为Datetime类型,确保索引类型正确:
# 加载时指定第0列为索引,并解析为Datetime类型 previous_df = pd.read_csv('datatest.csv', index_col=0, parse_dates=[0])
验证拼接操作
完成正确的保存与加载后,再执行拼接:
combined_data = pd.concat([previous_df, df_test], axis=0)
此时两个DataFrame的Datetime索引会被正确合并,不会出现索引丢失、列错位或生成冗余Unnamed:0列的问题,拼接结果将保留连续的Datetime索引结构。
错误原因说明
之前的操作中,因为保存时未写入索引,加载后previous_df的Datetime变成了普通数据列,而df_test的Datetime仍是索引,两者结构不匹配,最终导致拼接时出现数据错位、索引异常的问题。
内容的提问来源于stack exchange,提问作者Nikolas Weichert
相关产品推荐
相关产品推荐

