Два типа заголовков TXT к Pandas dataframe - PullRequest
0 голосов
/ 02 октября 2019

Допустим, у меня есть файл .txt, подобный этому:

#D=H|ID|STRINGIDENTIFIER
#D=T|SEQ|DATETIME|VALUE
H|879|IDENTIFIER1
T|1|1569972384|7
T|2|1569901951|9
T|3|1569801600|8
H|892|IDENTIFIER2
T|1|1569972300|109
T|2|1569907921|101
T|3|1569803600|151

И мне нужно создать такой фрейм данных:

IDENTIFIER      SEQ DATETIME    VALUE

879_IDENTIFIER1 1   1569972384  7
879_IDENTIFIER1 2   1569901951  9
879_IDENTIFIER1 3   1569801600  8
892_IDENTIFIER2 1   1569972300  109
892_IDENTIFIER2 2   1569907921  101
892_IDENTIFIER2 3   1569803600  151

Каким был бы возможный код?

1 Ответ

1 голос
/ 02 октября 2019

Основной способ сделать это, возможно, просто обработать текстовый файл и преобразовать его в csv перед использованием функции read_csv в pandas. Предполагая, что файл, который вы хотите обработать, такой же непротиворечивый, как в примере:

import pandas as pd
with open('text.txt', 'r') as file:
    fileAsRows = file.read().split('\n')

pdInput = 'IDENTIFIER,SEQ,DATETIME,VALUE\n' #addHeader
for row in fileAsRows:
    cols = row.split('|') #breakup row

    if row.startswith('H'): #get identifier info from H row
        Identifier = cols[1]+'_'+cols[2]

    if row.startswith('T'): #get other info from T row
        Seq = cols[1]
        DateTime = cols[2]
        Value = cols[3]

        tempList = [Identifier,Seq, DateTime, Value]
        pdInput += (','.join(tempList)+'\n')

with open("pdInput.csv", "a") as file:
    file.write(pdInput)

## import into pandas
df = pd.read_csv("pdInput.csv")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...