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

Pandas多索引DataFrame分组生成新列失败,值为NaT求解决

解决MultiIndex DataFrame添加分组最小日期列的问题

你的代码出现全NaT的原因是:reset_index()后得到的DataFrame是普通整数索引,分组transform生成的Series也是整数索引,而原df是ticker+date的MultiIndex,两者索引无法对齐,导致赋值时匹配失败,全部填充NaT。

下面是两种可行的解决方法:

方法1:跳过索引对齐直接赋值

直接提取transform结果的数组值,绕开索引不匹配的问题:

df['date_min'] = df.reset_index().groupby('ticker')['date'].transform('min').values

方法2:直接操作MultiIndex层级(更高效)

无需重置索引,直接从MultiIndex中提取层级数据进行分组计算,再映射回原df:

# 计算每个ticker对应的最小日期
min_dates = df.index.get_level_values('date').groupby(df.index.get_level_values('ticker')).min()
# 将ticker映射为对应的最小日期
df['date_min'] = df.index.get_level_values('ticker').map(min_dates)

验证结果

执行上述任意一种方法后,df会得到正确的date_min列:

price   date_min
ticker date                        
AAPL   2022-10-09    100 2022-10-09
       2022-10-10     95 2022-10-09
MSFT   2022-10-08    200 2022-10-08
       2022-10-09    150 2022-10-08

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 04:40:45