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

将带Datetime索引的Pandas DataFrame高效重排为多列

高效重排Datetime索引的Pandas DataFrame方案

针对你的12万条15分钟间隔数据,绝对不要用apply——这类逐行/逐组的循环操作在大规模数据上效率极低。推荐用Pandas内置的矢量化重塑方法,处理速度能控制在几秒内,甚至更快。

核心思路

利用Datetime索引的dt属性拆分出日期(作为行索引)和时段(作为列),然后通过pivot或unstack完成结构转换,这两个方法都是底层优化过的矢量化操作,远快于apply。

代码实现

假设你的原始DataFrame为df,唯一列名为measurement:

方法1:使用pivot(直观易读)

# 从Datetime索引提取日期和时段列
df['date'] = df.index.date
df['time_slot'] = df.index.time

# 重排结构:日期为索引,时段为列
pivoted_df = df.pivot(index='date', columns='time_slot', values='measurement')

方法2:使用groupby + unstack(性能略优)

不需要额外添加列,直接基于索引分组后展开:

# 按日期+时段分组,取对应测量值后展开为列
pivoted_df = df.groupby([df.index.date, df.index.time])['measurement'].first().unstack(level=1)

补充说明

  • 由于是15分钟间隔,一天会生成96个时段列(24*60/15),符合你的神经网络训练需求。
  • 如果存在缺失的时段数据(比如某日期少了几个15分钟点),可以用fillna填充:
    pivoted_df = pivoted_df.fillna(0)  # 按业务需求选择填充值,比如0或前向填充
    
  • 这两种方法处理12万条数据的耗时通常在1-2秒左右,完全满足你的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 16:15:31