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

Python Pandas如何筛选最小值落在指定日期范围的列名列表

实现代码

你可以直接用pandas内置方法完成需求,性能和可读性都很好:

import pandas as pd
import numpy as np

# 生成你给出的测试数据集
np.random.seed(2021)
dates = pd.date_range('20130226', periods=90)
df = pd.DataFrame(np.random.uniform(0, 10, size=(90, 6)), index=dates, columns=['A_values', 'B_values', 'C_values', 'D_values', 'E_values', 'target'])

# 1. 筛选后缀为_values的列
val_df = df.filter(regex='_values$')

# 2. 计算每列全局最小值对应的日期(默认取第一个出现最小值的日期)
col_min_date = val_df.idxmin()

# 3. 判断日期是否落在指定区间,inclusive参数控制区间开闭:'both'左闭右闭、'neither'开区间
date_mask = col_min_date.between('2013-05-01', '2013-05-15', inclusive='both')

# 4. 提取符合条件的列名列表
result = col_min_date[date_mask].index.tolist()

print(result)

运行结果

使用你给定的随机种子2021运行上述代码,输出为 ['C_values', 'E_values'],即这两列的全局最小值对应的日期都落在2013-05-01至2013-05-15范围内。

特殊场景适配

如果某列存在多个相同的全局最小值,只要有任意一个对应的日期落在指定区间就算符合条件,可以用以下写法:

start = pd.to_datetime('2013-05-01')
end = pd.to_datetime('2013-05-15')
result = [col for col in val_df.columns if any(val_df.index[val_df[col] == val_df[col].min()].between(start, end))]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:54:05