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

为何list[-1]无法返回列表内序列的最后一个元素?

问题原因及解决方法

你犯了个容易忽略的小错误:你把布尔判断的结果用方括号[]包起来了,这相当于创建了一个只装着pandas Series的单元素列表。

拆解错误逻辑

  • 代码[df1['Close'] / highest(df1['Close'],20) > 1]执行后,得到的是一个列表,列表里只有1个元素——就是那个长度3204的布尔Series。
  • 当你用[-1]索引这个列表时,取的是列表的最后(也是唯一)一个元素,也就是整个Series,所以输出和原来完全一致。

正确写法

直接去掉外层方括号,让表达式先返回Series,再用[-1]取最后一个元素:

(df1['Close'] / highest(df1['Close'],20) > 1)[-1]

或者用pandas更推荐的.iloc[-1](效果一致,可读性更强):

(df1['Close'] / highest(df1['Close'],20) > 1).iloc[-1]

这两种写法都会直接返回最后一行的布尔值,而非整个Series。

为什么你之前的转换写法能行?

你写的(df1['Close'] / highest(df1['Close'],20) > 1).iloc[-1:],括号的作用是让表达式优先计算成Series,再调用.iloc[-1:]取最后一行的切片。如果把[-1:]改成[-1],就能直接拿到单个布尔值了。

内容的提问来源于stack exchange,提问作者Rajib Lochan Sarkar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 09:55:16