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

如何对15分钟频率索引的DataFrame按月重采样并计算非零最小值?

如何在Pandas重采样时排除0值计算月度最小值

你可以通过两种方式实现排除0值的月度最小值计算:

方法一:将0替换为NaN后调用内置min(推荐,效率更高)

Pandas的min()方法会自动忽略NaN值,所以先把Value列中的0替换为缺失值,再做重采样计算即可:

import pandas as pd

# 先替换0为缺失值
df['Value'] = df['Value'].replace(0, pd.NA)
# 按月度重采样并取最小值
df_min = df.resample('1M')['Value'].min()

方法二:用apply自定义过滤逻辑

如果需要更灵活的过滤规则,可以在重采样时用apply传入自定义函数,先过滤掉大于0的值再取最小:

# 过滤0值后取最小,若组内无有效值则返回NaN
df_min = df.resample('1M')['Value'].apply(lambda x: x[x > 0].min() if not x[x > 0].empty else pd.NA)

效果验证

针对你给出的示例数据:

datetimeValue
2019-09-02 16:15:000.00
2019-09-02 16:30:003.07
2019-09-02 16:45:001.05

两种方法都会得到2019年9月的最小值为1.05,符合你排除0值的需求。

注意:如果某一月份的所有Value都是0,两种方法都会返回NaN,避免出现无有效数据时的报错问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 23:06:12