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

如何将含多个Timestamp数组的列表转为DataFrame索引?

解决方法

你的问题出在pd.concat只能处理Series或DataFrame对象,不能直接拼接numpy数组,所以得先把数组转成允许的格式,或者先合并所有数组,再创建DataFrame索引。下面给两种可行的方案:

方案一:合并所有数组为一维数组

先把列表里的多个numpy数组合并成一个一维数组,再用这个数组作为DataFrame的索引:

import pandas as pd
import numpy as np

# 你的日期列表
dates = [np.array([pd.Timestamp('2022-09-26 00:00:00', freq='15T'),
                   pd.Timestamp('2022-09-26 00:15:00', freq='15T'),
                   pd.Timestamp('2022-09-26 00:30:00', freq='15T')], dtype=object),
         np.array([pd.Timestamp('2022-09-27 00:00:00', freq='15T'),
                   pd.Timestamp('2022-09-27 00:15:00', freq='15T')], dtype=object)]

# 合并数组为一维数组
combined_dates = np.concatenate(dates)

# 创建DataFrame(这里用随机数据示例,替换成你的真实数据即可)
df = pd.DataFrame({'values': np.random.rand(len(combined_dates))}, index=combined_dates)

方案二:转成Series后拼接

把每个numpy数组转换成Pandas Series,再用pd.concat拼接,最后作为索引:

import pandas as pd
import numpy as np

# 你的日期列表
dates = [np.array([pd.Timestamp('2022-09-26 00:00:00', freq='15T'),
                   pd.Timestamp('2022-09-26 00:15:00', freq='15T'),
                   pd.Timestamp('2022-09-26 00:30:00', freq='15T')], dtype=object),
         np.array([pd.Timestamp('2022-09-27 00:00:00', freq='15T'),
                   pd.Timestamp('2022-09-27 00:15:00', freq='15T')], dtype=object)]

# 将每个数组转为Series
date_series_list = [pd.Series(arr) for arr in dates]

# 拼接Series
combined_dates = pd.concat(date_series_list, ignore_index=False)

# 创建DataFrame
df = pd.DataFrame({'values': np.random.rand(len(combined_dates))}, index=combined_dates)

如果不需要Timestamp里的freq属性,可以在合并后转成普通datetime类型:

combined_dates = np.concatenate(dates).astype('datetime64[ns]')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:10:25