python - 循环布尔列表
问题描述
我正在尝试计算布尔值为真的时间。但我不明白如何编写翻转布尔值必须导致动作的代码。
在图片中,您会看到右列中的一些值为真,必须计算第一个和最后一个真之间的时间范围。
所以这是2019-02-22 09:20:01和2019-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 用户,所以我不会更进一步。希望有人能够帮助我。
解决方案
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])
推荐阅读
- php - 如何使用 Dropdown Butoon 将值发送到 php 表单
- c++ - 如何使用为旧板编写的代码中的中断将 C++ 代码移植到 Esp8266 和 Esp32
- php - PHP shell_exec() 无法运行部分 shell 脚本
- regex - 正则表达式正确检测电话号码,但在电话号码内联时无法检测
- mariadb - MariaDB:读取文件时的 LOAD DATA INFILE 块
- python - 使用“For Loop”将数据写入文件
- javafx - 无法运行 javafx 项目
- java - 如何在 MVC 中更新和查看当前窗口
- laravel - 为什么在 try 块中没有捕获 500 错误?
- scala - elastic4s:从 RequestSuccess[DeleteByQueryResponse] 中提取信息