首页 > 解决方案 > 循环布尔列表

问题描述

我正在尝试计算布尔值为真的时间。但我不明白如何编写翻转布尔值必须导致动作的代码。

见数据框图片

在图片中,您会看到右列中的一些值为真,必须计算第一个和最后一个真之间的时间范围。

所以这是2019-02-22 09:20:012019-02-22 09:50:03之间的时间

因此,答案必须是30 分 2 秒

该列表可能比这更长,因此在其他地方开始了另一个真实值的时期。

我实验的代码如下:

for i in (df1['InsideArea'][:]):
  if i == 'True' and i != df1['InsideArea'][i-1]:
      start_time = df1['time'][i]
  elif i == 'False' and i != df1['InsideArea'][i-1]:
      end_time = df1['time'][i]
      df1['TimeInArea'] = (start_time - end_time)
  else:
      continue

因为我不是经验丰富的 python 用户,所以我不会更进一步。希望有人能够帮助我。

数据帧的 CSV 文件

标签: python

解决方案


times = df1.index[1:][df1.iloc[1:, 1].reset_index(drop=True) != df1.iloc[:-1, 1].reset_index(drop=True)]
print(times[1::2] - times[0::2])

推荐阅读