Я бы посоветовал обработать ваши данные, вставив тщательно отобранные данные в Pandas как список списка. Проблема, которую я обнаружил с вашим образцом, заключается в том, что в первом поле он содержит запятые, которые мешают синтаксическому анализу CSV, а также работают через разделитель запятых. Таким образом, требуется курирование данных. Пожалуйста, найдите мой исходный код для Python 3 ниже:
data = ['Table: Table_1\n',
'\n',
'Test Name ,Result ,Flag ,Reference Range ,Lab ,\n',
'HEPATIC FUNCTION PANEL PROTEIN, TOTAL ,6.1 ,,6.1-8.1 g/dL ,EN ,\n',
'ALBUMIN ,4.3 ,,3.6-5.1 g/dL ,EN ,\n',
'GLOBULIN ,1.8 ,LOW ,1.9-3.7 g/dL (calc) ,EN ,\n',
'ALBUMIN/GLOBULIN RATIO ,2.4 ,,1.0-2.5 (calc) ,EN ,\n',
'BILIRUBIN, TOTAL ,0.6 ,,0.2-1.2 mg/dL ,EN ,\n',
'BILIRUBIN, DIRECT ,0.2 ,,< OR = 0.2 mg/dL ,EN ,\n',
'BILIRUBIN, INDIRECT ,0.4 ,,0.2-1.2 mg/dL (calc) ,EN ,\n',
'ALKALINE PHOSPHATASE ,61 ,,40-115 U/L ,EN ,\n',
'AST ,27 ,,10-35 U/L ,EN ,\n',
'ALT ,19 ,,9-46 U/L ,EN ,\n',
'\n',
'\n',
'\n',
'\n',
'\n']
lines = [x.replace('\n','') for x in data]
import re
p = re.compile('^[/A-Z ]+[,]*[/A-Z ]*,')
curated_lines = []
for l in lines:
m = p.search(l)
if m != None:
s = m.group(0)
cs = s.replace(',','')
cl = l.replace(s,cs+',')
curated_lines.append(cl)
frame_list_of_list = [l.split(',')[:-1] for l in curated_lines]
import pandas as pd
df = pd.DataFrame(frame_list_of_list,columns=['Test Name','Result','Flag','Reference Range','Lab'])
print(df)
Что дает следующие результаты:
Test Name Result Flag Reference Range Lab
0 HEPATIC FUNCTION PANEL PROTEIN TOTAL 6.1 6.1-8.1 g/dL EN
1 ALBUMIN 4.3 3.6-5.1 g/dL EN
2 GLOBULIN 1.8 LOW 1.9-3.7 g/dL (calc) EN
3 ALBUMIN/GLOBULIN RATIO 2.4 1.0-2.5 (calc) EN
4 BILIRUBIN TOTAL 0.6 0.2-1.2 mg/dL EN
5 BILIRUBIN DIRECT 0.2 < OR = 0.2 mg/dL EN
6 BILIRUBIN INDIRECT 0.4 0.2-1.2 mg/dL (calc) EN
7 ALKALINE PHOSPHATASE 61 40-115 U/L EN
8 AST 27 10-35 U/L EN
9 ALT 19 9-46 U/L EN