如何用groupby按ticker和日期分组OHLC分钟数据?
按Ticker和日期分组的正确方法
方法一:直接用pd.Grouper针对索引分组
因为你的DataFrame索引是datetime类型,直接通过level参数指定索引,同时结合ticker列分组:
grouped = df.groupby(['ticker', pd.Grouper(level=0, freq='1D')])
如果你的索引是多级索引,把level=0改成对应datetime所在的层级编号即可。
方法二:提取日期为新列后分组
先从datetime索引中提取日期生成新列,再按ticker和新列分组,逻辑更直观:
# 从索引提取日期,生成新列 df['trade_date'] = df.index.date # 按股票代码和日期分组 grouped = df.groupby(['ticker', 'trade_date'])
之前报错的原因说明
- 第一种方法用
key='index'报错:pd.Grouper的key参数是指定DataFrame列名,但你的datetime是索引不是列,所以找不到对应列,触发KeyError。 - 第二种方法用
key=df.index报错:key参数不接受数组类型输入,直接传索引数组会触发逻辑判断歧义的ValueError。
内容的提问来源于stack exchange,提问作者a7dc
相关产品推荐
相关产品推荐

