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

Python Pandas:如何将pd.to_datetime转换后的Series转为DatetimeIndex以合并含日期的数据集?

解决方法:将Series转换为DatetimeIndex

我明白你的问题了——pd.to_datetime()处理Series后返回的还是Series对象,而pd.Index.union需要的是DatetimeIndex(Index的子类)才能正常合并。下面是具体的修复步骤和完整代码:

核心问题解析

当你用pd.to_datetime()处理一个Series时,它返回的是元素为datetime类型的Series,而非DatetimeIndex。functools.reduce结合pd.Index.union需要的是Index类的实例(比如DatetimeIndex),所以必须显式将Series转换为DatetimeIndex。

修复方案

推荐在datetime_convert函数内部完成转换,让代码更整洁:

完整修复代码

import functools
import pandas as pd

def datetime_convert(dataset):
    data = pd.read_csv(dataset[0], low_memory=False)
    # 反转表格并重置索引
    data1 = data.iloc[::-1].reset_index(drop=True)
    # 提取指定日期列
    date_series = data1[dataset[1]]
    # 先转datetime类型Series,再转为DatetimeIndex
    date_index = pd.DatetimeIndex(pd.to_datetime(date_series))
    return date_index

# 注意:修正文件名笔误,原代码中的'data2'应为'data2.csv'
data1 = datetime_convert(['data1.csv', 'date'])
data2 = datetime_convert(['data2.csv', 'Date'])
# 合并两个DatetimeIndex
data_combo = functools.reduce(pd.Index.union, [data1, data2])

print(data_combo)

备选方案:调用函数后转换

如果不想修改原函数,也可以在获取返回值后手动转换:

data1 = pd.DatetimeIndex(datetime_convert(['data1.csv', 'date']))
data2 = pd.DatetimeIndex(datetime_convert(['data2.csv', 'Date']))
data_combo = functools.reduce(pd.Index.union, [data1, data2])

预期输出

运行修复后的代码,你会得到符合预期的结果:

DatetimeIndex(['2015-10-08 13:40:00', '2015-10-08 13:41:00',
               '2015-10-08 13:42:00', '2021-10-21 00:01:00',
               '2021-10-21 00:02:00', '2021-10-21 00:03:00'],
              dtype='datetime64[ns]', freq=None)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 21:57:38