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

Pandas创建Time列变化标识时Boolean值全部返回True问题求解

问题原因分析

你的代码出现全为True的错误主要有两个核心问题:

  • 你用eq(1)匹配Time的差值,但你的样例中Time从209012425跳到209012428时差值为3,无法被eq(1)匹配,不符合实际需求。
  • 你添加了where(wholedf['TIME']==0)和where(wholedf['TIME'] == 1)的过滤条件,但你的Time列数值均为2亿左右的大数值,不存在等于0或1的情况,导致where运算后所有值都为NaN,而NaN转为布尔值时默认是True,最终输出全为True。
正确实现代码

只需要判断当前行的Time值和上一行是否不同即可,一行代码就能实现:

wholedf['Change'] = wholedf['Time'].diff().ne(0).fillna(False)
  • diff()方法会计算当前行与上一行Time列的差值
  • ne(0)表示判断差值是否不等于0,等于0说明Time没有变化,返回False;不等于0说明Time发生了变化,返回True
  • fillna(False)是处理第一行的diff结果为NaN的情况,将第一行的Change值设为False,符合你的预期输出要求。

如果你的实际列名是大写的TIME,把代码里的Time替换为TIME即可。

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

相关产品推荐
方舟 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