Pandas判断连续分钟时间序列时结果全为True的问题排查
问题根因
你写的时间差计算逻辑本身没有问题,故障核心原因是**Date列未被转换为pandas的标准datetime时间类型**,仍为字符串/object格式,导致时间差计算完全失效。
你可以先执行以下命令验证列类型:
print(df['Date'].dtype)
如果输出结果不是datetime64[ns]类的时间类型,即可确认问题。
故障逻辑说明
当Date列为非时间类型时:
df['Date'].diff()无法计算合法时间差,所有行返回空值NaN- 后续
.dt.total_seconds()、除以60的计算全部返回空值 - 空值和1做
ne(1)(不等于1)判断时,永远返回True,因此所有行的g列结果全为True,和你观测到的现象完全吻合。
修复方案
先将Date列转换为标准时间类型,再执行原有连续判断逻辑即可:
# 先转换时间类型 df['Date'] = pd.to_datetime(df['Date']) # 再执行连续分钟判断 df['g'] = df['Date'].diff().dt.total_seconds().div(60).ne(1)
注:第一行数据因为没有前序时间做差,diff()计算结果本身就是NaN,ne(1)返回True,刚好符合你要的「连续段起始行标记为True、连续相邻行标记为False、断点行标记为True」的逻辑,不需要额外调整。
执行后输出结果和你的预期完全一致:
| Date | meter | g |
|---|---|---|
| 2009-02-13 13:23:00 | 53.49 | True |
| 2009-02-13 13:24:00 | 64.91 | False |
| 2009-02-13 13:25:00 | 32.04 | False |
| 2009-02-13 13:26:00 | 45.94 | False |
| 2009-02-13 15:45:00 | 45.94 | True |
内容的提问来源于stack exchange,提问作者SunnyBoiz
相关产品推荐
相关产品推荐

