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

在pandas DataFrame中为股票季度盈利日期前后批量新增n条日期行

实现方案

以下代码可直接运行,调整参数n即可控制每个原始日期前后新增的行数:

import pandas as pd

# 原始数据构造
df = pd.DataFrame({
    'ticker': ['AAPL', 'AAPL', 'AAPL','AAPL', 'MSFT', 'MSFT','MSFT', 'MSFT'], 
    'datetime': ['2015-01-01', '2015-04-01', '2015-07-01', '2015-12-01', '2015-01-01', '2015-04-01', '2015-07-01', '2015-12-01'],
})
df['datetime'] = pd.to_datetime(df['datetime'])

# 自定义前后新增天数,n=1即前后各加1天
n = 1

# 生成每行对应的前后n天日期序列
df['date_range'] = df['datetime'].apply(lambda dt: pd.date_range(dt - pd.Timedelta(days=n), dt + pd.Timedelta(days=n)))
# 展开日期序列为独立行
result_df = df.explode('date_range', ignore_index=True)
# 替换原日期列、删除临时辅助列
result_df['datetime'] = result_df['date_range']
result_df = result_df.drop(columns=['date_range'])

# 可选:按股票代码和日期排序,保证输出顺序和示例一致
result_df = result_df.sort_values(by=['ticker', 'datetime'], ignore_index=True)

逻辑说明

  • 通过pd.Timedelta计算原始日期的前后偏移量
  • 用pd.date_range生成包含原始日期、前后n天的连续日期序列
  • 用explode方法将列表格式的日期序列拆分为独立行,最终行数为原始行数*(2n+1),完全匹配你给出的预期输出结构

注意事项

如果需要生成的是交易日而非自然日,可替换pd.Timedelta为pandas的BDay交易日偏移,其余逻辑不变。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 08:45:05