Перетаскивание набора данных временных рядов в неудобном формате из текстового файла в кадр данных Pandas в Python - PullRequest
0 голосов
/ 24 октября 2018

У меня есть .txt, содержащий набор данных временных рядов, отформатированный следующим образом, в виде строк, разделенных \ n:

N>New Section  
A>1, 2, 3  
L>Label_1  
G>1, 2, 3  
A>3, 2, 1  
G>3, 1, 1  
A>2, 2, 1 

... множеством строк пар G> и A>,с переменным номером, затем новый раздел L> Label ...

L>Label_1  
G>1, 2, 3  
A>3, 2, 1  
G>3, 1, 1  
A>2, 2, 1 

... и иногда новый N> Новый раздел ...

N>New Section  
A>1, 2, 3  
L>Label_2  
G>1, 2, 3  
A>3, 2, 1  
G>3, 1, 1  
A>2, 2, 1

... повторяется многораз.

Каждая пара строк G> и A> представляет собой набор измерений x, y, z на временной метке в серии временных рядов, состоящей из сотен измерений, связанных с меткой L>, которая предшествовала им.Есть 6 возможных меток.

Требуемый выходной формат - это кадр данных pandas со следующими столбцами, сохраняющий всю информацию в наборе данных.

Time, G_x, G_y, G_z, A_x, A_y, A_z, Label, Label_Measurement,Section
    0   1   2    3    3    2    1   Label_1   Label_1_1       1
    1   3   1    1    2    2    1   Label_1   Label_1_1       1  
    0   1   2    3    3    2    1   Label_1   Label_1_2       1  
    1   3   1    1    2    2    1   Label_1   Label_1_2       1  
    0   1   2    3    3    2    1   Label_2   Label_2_1       2  
    1   3   1    1    2    2    1   Label_2   Label_2_1       2 

У меня есть несколько идей об элементах, которые, я думаю, мне понадобятся для решения.

Я могу сделать несколько счетчиков, чтобы подсчитать каждый тип строки в файле по мере их появления:

counter_New_section = 0  
counter_Label = 0  
counter_A_row = 0  
counter_G_row = 0  

, и я могу перебирать каждую строку файла и использовать некоторые условные обозначения для определениякакой тип линии - каждая линия, и выполните с ней соответствующие действия:

with open(dataset.txt) as dataset:  
    for line in dataset:
        if line.startswith('N>') ... do the appropriate
        if line.startswith('L>')  ... "               "
        if line.startswith('G>')  ... "               "
        if line.startswith('A>')  ... "               "

... Я борюсь.Каков наилучший подход для достижения желаемого результата вывода данных?
Спасибо

...