我写了一个程序,分析暖通空调数据的运行故障。程序通过一组规则来输入数据,而输出是一个类似这样的数据帧
从该输出中,我使用以下代码遍历每一列,打印列本身的名称,并打印索引(日期)中的值,只要另一列中的值为真:
pos = 0
for column in df:
try:
colname = faults[df.columns[pos]]
print "The fault -" +str (colname)+ "- occurred on:"
except Exception:
pass
try:
print df.loc[df[column] == True, 'Date'].iloc[:]
except TypeError:
pass
print
pos += 1
输出如下所示
代码运行良好,但我想更改一下输出。我只想打印第一个和最后一个真值,这样输出会显示“错误发生在'x'到'y'之间”,而不是每次真值出现时打印
复杂的是,有时一列中可能有多组1,所以我不能只打印第一个和最后一个有真值的索引。列可能看起来像(0,0,1,1,1,0,0,0,1,1,1,1,1,0,0,1,0),在这种情况下,我希望它打印“故障从这里到这里,从这里到这里,再到这里。”
有没有办法打印数据帧列中每个真值组的第一个和最后一个索引
以下是我的建议,请浏览列表以找到开始和结束(如果需要,请添加第一个和最后一个)并压缩它们:
输出:
规则1
规则2
(时间戳('2017-12-25 00:30:00'),时间戳('2017-12-25 01:00:00'))
(时间戳('2017-12-25 02:00:00'),时间戳('2017-12-25 02:45:00'))
规则3
(时间戳('2017-12-25 00:00:00'),时间戳('2017-12-25 03:00:00'))
相关问题 更多 >
编程相关推荐