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

Pandas条件筛选未返回对应行,如何获取累计总额刚低于160的行

解决Pandas筛选“刚低于指定值”行的问题

先看你的DataFrame数据:

amount price total running_total
0 10 6.0 60.0 60.0
1 12 5.5 66.0 126.0
2 8 5.0 40.0 166.0
3 6 4.8 28.8 194.8

你要找的是running_total刚低于160的行,也就是所有小于160的running_total里数值最大的那一行(对应索引1的126.0)。如果直接用df[df['running_total'] < 160],会返回前两行,但这不是你要的“刚低于”的单行结果,所以需要进一步处理。

这里有两种简单的实现方式:

方法1:直接取筛选结果的最后一行

因为你的running_total是累加(cumsum)生成的递增序列,所以筛选出的小于160的行里,最后一行就是最接近160的那一行:

# 筛选出所有running_total <160的行,取最后一行
target_row = df[df['running_total'] < 160].iloc[-1]
print(target_row)

输出结果:

amount            12.0
price              5.5
total             66.0
running_total    126.0
Name: 1, dtype: float64

方法2:先找到目标最大值再匹配

先找出所有小于160的running_total中的最大值,再根据这个值筛选对应行,这种方法不依赖行的顺序,适用性更广:

# 计算小于160的running_total的最大值
max_below = df[df['running_total'] < 160]['running_total'].max()
# 筛选对应行
target_row = df[df['running_total'] == max_below]
print(target_row)

输出结果:

amount  price  total  running_total
1      12    5.5   66.0          126.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:34:04