2014-01-31 4 views
1

Ниже вы можете найти отрывок из pandas timeseries. Я хотел бы нарезать ряды, выделенные пробелом. Существует повторяющийся шаблон, то есть 21 раз значение X, четыре разных значения ABCD, 21 раз значение Y, четыре разных значения EFGH, 21 раз значение Z и т. Д. В этом случае я заинтересован в получении BCDY, FGHZ и т. Д.python: разрез в соответствии с нерегулярным рисунком

Проблема в том, что этот шаблон иногда прерывается из-за отсутствия данных.

Любые идеи? Благодарю.

2014-01-20 00:00:00 197021 
2014-01-20 00:01:00 197021 
2014-01-20 00:02:00 197021 
2014-01-20 00:03:00 197021 
2014-01-20 00:04:00 197021 
2014-01-20 00:05:00 197021 
2014-01-20 00:06:00 197021 
2014-01-20 00:07:00 197021 
2014-01-20 00:08:00 197021 
2014-01-20 00:09:00 197021 
2014-01-20 00:10:00 197021 
2014-01-20 00:11:00 197021 
2014-01-20 00:12:00 197021 
2014-01-20 00:13:00 197021 
2014-01-20 00:14:00 197021 
2014-01-20 00:15:00 197021 
2014-01-20 00:16:00 196836 

2014-01-20 00:17:00 196865 
2014-01-20 00:18:00 196787 
2014-01-20 00:19:00 196915 
2014-01-20 00:20:00 196902 

2014-01-20 00:21:00 196902 
2014-01-20 00:22:00 196902 
2014-01-20 00:23:00 196902 
2014-01-20 00:24:00 196902 
2014-01-20 00:25:00 196902 
2014-01-20 00:26:00 196902 
2014-01-20 00:27:00 196902 
2014-01-20 00:28:00 196902 
2014-01-20 00:29:00 196902 
+0

Есть ли у вас код, чтобы показать нам? – IanAuld

+0

Нет, извините. Я предпочитаю разбираться, как действовать, прежде чем начинать код. – user2143353

+0

Этот вопрос является дубликатом http://stackoverflow.com/questions/22346147/slice-according-to-an-irregular-pattern. – tobip

ответ

0

Вы можете не только перебирать, хотя линии, добавляя все к списку текущей группы строк, а затем на пустой строке, изменить список вы тоже, добавить свои? Это предполагает, что отсутствующие данные не возвращают пустую строку, не создавая новую строку.

x = 1 
groups = { 1 : [], 2 : [], 3 : [] } 
for line in file_obj.readlines(): 
    if line: 
     groups[x].append(line) 
    else: 
     x += 1 
     if x > 3: 
      x = 0 
+0

Спасибо. Я уже думал об итеративном подходе, но я хотел бы знать, есть ли векторизованный способ делать что-то. – user2143353

Смежные вопросы