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

在Pandas多索引结构中提取日期索引值的方法

解决方法:直接提取每周Low最小值对应的日期

你完全不需要用for循环逐个查找!Pandas的分组工具已经提供了更高效的方式来实现这个需求,下面是两种简单的方案:

方案1:使用idxmin()直接定位最小值行

idxmin()可以帮你找到每个分组中最小值所在的完整行索引(也就是你的MultiIndex),然后直接用这个索引提取Date1列即可:

# 获取每个week组中Low最小值对应的行索引
week_min_indices = df.groupby('week')['Low'].idxmin()

# 通过索引提取对应的Date1日期
week_min_dates = df.loc[week_min_indices, 'Date1']

运行后week_min_dates会是一个Series,索引是week,值就是对应每周Low最小值的Date1日期,示例输出类似:

week
1     2021-01-06
2     2021-01-15
3     2021-01-19
...
53    2020-12-31
Name: Date1, dtype: datetime64[ns]

方案2:用transform()标记最小值行再筛选

如果你需要同时保留其他列的数据,也可以用transform()给每行标记是否是本组的最小值,再筛选:

# 新增一列标记该行是否是对应week的Low最小值
df['is_week_low_min'] = df['Low'] == df.groupby('week')['Low'].transform('min')

# 筛选出所有最小值行并提取Date1
week_min_dates = df[df['is_week_low_min']]['Date1']

这个方法得到的week_min_dates会保留原DataFrame的MultiIndex,你可以用.values转成日期数组、.tolist()转成列表,或者.reset_index(drop=True)去掉索引只保留纯日期值。

为什么你的循环方法返回MultiIndex?

因为df[df['Low'].isin([stuff])]['Date1']返回的是带有原DataFrame完整索引的Series,所以会显示MultiIndex。而上面的两种方法可以直接得到你需要的日期值,无需额外处理循环结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 04:52:29