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

如何用Pandas从Datetime Index提取每日收盘时间并添加为新列

解决方案

你的问题出在pd.concat是按索引对齐合并,但a的索引是日度日期(如2024-01-01),而SPX1m的索引是分钟级时间戳(如2024-01-01 09:30:00),两者索引不匹配,导致合并后大部分行的EOD列是缺失值。

下面两种方法可以直接实现需求:

方法一:用groupby.transform一步到位

不需要单独生成a,直接对原DataFrame分组后广播每日最大时间到组内所有行:

# 保留索引为DT列(你已完成这步)
SPX1m["DT"] = SPX1m.index

# 直接添加EOD列
SPX1m['EOD'] = SPX1m.groupby(pd.Grouper(freq='D'))['DT'].transform('max')

transform('max')会将每个日期组的最大时间戳,填充到该组的每一行,自动对齐所有分钟级数据。

方法二:基于已生成的a映射填充

如果已经得到了正确的a(每日最晚时间的Series),可以通过索引的日期部分映射取值:

# 用原数据索引的日期部分,匹配a的日度索引,取出对应的最大时间
SPX1m['EOD'] = SPX1m.index.date.map(a)

这里SPX1m.index.date会把每个分钟级时间戳提取出纯日期(如2024-01-01),正好和a的索引一致,map会自动将对应的每日最晚时间填充到每一行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 15:25:26