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

如何在pd.date_range中使用多组日期批量生成分钟级时间序列

错误原因

  • 拼写错误:关键字lambda被误写为lamda
  • 逻辑错误:lambda的入参x是当前行的单个日期值,但代码中传入pd.date_range的是整列df['date'],导致函数接收数组参数而非单个起止时间
  • 参数误用:对df.date这个Series调用apply时不需要指定axis=1,该参数仅用于DataFrame的按行/列迭代场景

正确实现

方案1:apply实现(适合中小数据量)

首先确保date列已转换为datetime类型,再对单个日期值调用pd.date_range:

import pandas as pd
import datetime

# 先做类型转换,避免非标准格式日期报错
df['date'] = pd.to_datetime(df['date'])

# 逐行生成时间序列,结果保存为列表格式的列
df['minute_range'] = df['date'].apply(
    lambda x: pd.date_range(start=x, end=x+datetime.timedelta(days=1), freq="1min")
)

如果需要将生成的时间序列展开为每行一个时间点,追加如下代码:

exploded_df = df.explode('minute_range', ignore_index=True)

方案2:向量化实现(适合超大规模日期数据)

apply本质仍是逐行迭代,日期量级极大时推荐使用完全向量化的实现,性能比apply高1~2个数量级:

import pandas as pd
import datetime

df['date'] = pd.to_datetime(df['date'])
points_per_day = 24 * 60  # 单日1分钟频率共1440个时间点

# 生成基准时间偏移序列
base_offset = pd.timedelta_range(start="0min", end="1439min", freq="1min")

# 直接批量生成所有时间点
all_dates = df['date'].repeat(points_per_day).reset_index(drop=True)
all_minute_points = all_dates + base_offset.tile(len(df))

# 合并回原DataFrame的其他字段
exploded_df = df.loc[df.index.repeat(points_per_day)].reset_index(drop=True)
exploded_df['minute_point'] = all_minute_points

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:54:06