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

如何在pandas DataFrame中查找指定列大于0的最小值

问题说明

现有名为df_percentage_change的DataFrame,内容如下:

Index End Date                Change
0     2022-06-18 19:59:59.999 0
1     2022-06-18 20:29:59.999 -0.020028
2     2022-06-18 20:59:59.999 1.53509
3     2022-06-18 21:29:59.999 2.30751

需要通过单行代码获取Change列中大于0的最小值,上述示例的预期结果为1.53509。

自行编写的实现代码如下:

df_percentage_change["Change"].apply(lambda x: min(df_percentage_change["Change"]) if df_percentage_change["Change"] > 0)

运行代码后抛出报错:

SyntaxError: invalid syntax

正确实现

原代码报错原因有两点:

  • Python三元表达式要求必须写else分支,原代码缺失else部分,直接触发语法错误
  • 不需要用apply逐行遍历,用pandas原生的布尔筛选加聚合方法实现更简洁,运行效率也更高

正确单行代码:

df_percentage_change.loc[df_percentage_change["Change"] > 0, "Change"].min()

逻辑说明:先通过布尔条件筛选出Change列值大于0的所有记录,再对筛选后的列直接调用min()方法取最小值,运行即可得到目标结果1.53509。

如果要使用lambda函数实现(性能低于原生pandas方法,不推荐),修正后的写法为:

min(filter(lambda x: x > 0, df_percentage_change["Change"]))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 03:09:39