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

如何为股票数据的月度首个交易日添加Dummy variable(D_FoM)列

解决DataFrame新增月度首个交易日标记列的问题

嘿,我来帮你搞定这个需求!你已经成功筛选出了月度首个交易日的数据,现在只需要把这些日期标记到原DataFrame里就可以啦,步骤其实很简单:

首先先修正你原代码里的一个小问题——导入语句要分开写,不能连在一起:

import pandas_datareader as web
import pandas as pd
import numpy as np
import datetime as dt

接下来获取数据并处理索引(注意:google数据源目前已失效,建议改用'yahoo';如果是你自己的本地数据,直接跳过数据源部分即可):

# 获取AAPL数据
df = web.DataReader('AAPL', 'yahoo')
# 如果你的数据里单独有Date列,才需要执行下面这行;用yahoo数据源的话,索引本身就是日期,可跳过
# df = df.set_index(pd.to_datetime(df['Date']))
df.sort_index(inplace=True)

然后提取所有月度首个交易日的日期:

# 按月度起始频率分组,取每组第一行,提取这些行的索引(即目标日期)
first_trading_days = df.groupby(pd.Grouper(freq='MS')).nth(0).index

最后新增D_FoM列并完成标记:

# 先给所有行默认设为0
df['D_FoM'] = 0
# 把月度首个交易日对应的单元格设为1
df.loc[first_trading_days, 'D_FoM'] = 1

这样你就能看到原DataFrame里多了一列D_FoM,只有每个月第一个交易日的行是1,其他都是0啦。

确实如你所说,R里用dplyr这类工具处理分组标记可能会更简洁,但Python里这个写法也很直观,完全能满足需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:09:11