0
d = {
'datetime': ['2010-01-08 09:45:00', '2010-01-08 10:00:00',
'2010-01-08 10:15:00', '2010-01-08 10:30:00',
'2010-01-08 10:45:00', '2010-01-08 11:00:00',
'2010-01-08 11:15:00', '2010-01-08 11:30:00',
'2010-01-08 11:45:00', '2010-01-08 12:00:00',
'2010-01-08 12:15:00', '2010-01-08 12:30:00',
'2010-01-08 12:45:00', '2010-01-08 13:00:00',
'2010-01-08 13:15:00', '2010-01-08 13:30:00',
'2010-01-08 13:45:00', '2010-01-08 14:00:00',
'2010-01-08 14:15:00', '2010-01-08 14:30:00',
'2010-01-08 14:45:00', '2010-01-08 15:00:00',
'2010-01-08 15:15:00', '2010-01-08 15:30:00',
'2010-01-08 15:45:00', '2010-01-08 16:00:00',
'2010-01-08 16:15:00'],
'Total-tops': [0,-1,-1,2,3,0,0,4,0,0,0,0,5,6,7,8,-1,0,0,0,0,0,0,0,-1,-1,2]
}
df = pandas.DataFrame(d)
df = df.set_index('datetime')
我想補充另一列是該行是否將打破與否的布爾。休息意味着上衣的數量大於1,然後在未來的某個地方出現-1。例如,前兩個將在遇到的下一個-1處中斷。這裏是所需的數據幀:
這是我目前使用的函數,但它運行非常慢,因爲我遍歷所有行。
def does_break(data):
cur_breaks = []
for index, row in data.iterrows():
if row['Total-tops'] > 1:
# Get all rows after this time that are new tops
breaks = data[(data['Total-tops'] == -1) & (data.index.time > index.time())]
if len(breaks) > 0:
cur_breaks.append(True)
else:
cur_breaks.append(False)
else:
cur_breaks.append(False)
return cur_breaks