2017-12-29 4 views
1

ich ein Array habe, die wie folgt aussieht,Wie ein Array-Wert trennen und in dem Datenrahmen in Pandas

[{'interval': '1', 
'paramlist': [{'PARAMCODE': 'P7-3-5-2-0', 'UNIT': 'k', 'VALUE': '0'}, 
      {'PARAMCODE': 'P2-1-3-4-0', 'UNIT': 'A', 'VALUE': '0'}]}, 
{'interval': '2', 
'paramlist': [{'PARAMCODE': 'P7-3-5-2-0', 'UNIT': 'k', 'VALUE': '0'}, 
      {'PARAMCODE': 'P2-1-3-4-0', 'UNIT': 'A', 'VALUE': '0'}]}, 

und es geht weiter, bis so viel mehr Abstand.

Wie iterieren und diesen Wert in Datenrahmen in Pandas mit verschiedenen Spalten wie Intervall, Paramcode, Einheit und Wert?

Dies ist etwas, was ich

D4 = root.find('UTILITYTYPE').find('D4') 
dayProfileRequested = {'DATE': dateRequested, 'IPlist': None} 
    for dayprofile in D4: 
if dayprofile.attrib['DATE'] != dateRequested: 
    continue 
else: 
    ipList = [] 
    for ip in dayprofile: 
     ipDict = {'interval': ip.attrib['INTERVAL']} 
     paramList = [] 
     for param in ip: 
      paramDict = {'PARAMCODE': param.attrib['PARAMCODE'], 'VALUE': param.attrib['VALUE'], 
         'UNIT': param.attrib['UNIT']} 
      paramList.append(paramDict)     
     ipDict['paramlist'] = paramList 
     ipList.append(ipDict) 
    dayProfileRequested['IPlist'] = ipList 
    break pprint(dayProfileRequested) 
+0

Haben Sie schon einmal etwas ausprobiert? SO ist * kein * kostenloser Codierdienst. –

+0

Das ist eigentlich dumm einfach. Macht es Ihnen etwas aus, mir zu zeigen, was Sie getan haben? –

+0

Ich habe meine Frage aktualisiert – Noumi

Antwort

0

Angenommen, Ihre Liste getan wird durch x verwiesen, Sie json_normalize mit den record_path und meta Parameter verwenden können -

df = pd.io.json.json_normalize(x, record_path=['paramlist'], meta=['interval']) 
df 

    PARAMCODE UNIT VALUE interval 
0 P7-3-5-2-0 k  0  1 
1 P2-1-3-4-0 A  0  1 
2 P7-3-5-2-0 k  0  2 
3 P2-1-3-4-0 A  0  2 

Eine Empfehlung Ich habe Wenn Sie mit JSON arbeiten, verwenden Sie die JSON-Parser-Bibliothek von Pandas (AKA,)). Die meisten JSON-Strukturen sind einfach genug, um mit einer Out-of-the-Box-Nutzung der API zu arbeiten. In der Zwischenzeit benötigen einige andere Strukturen (wie diese) etwas mehr Arbeit. Und das ist in Ordnung. Sie können es leicht durch Versuch und Irrtum herausfinden.

+0

@coldspeed Danke für die Antwort, es funktionierte für mich, gerade jetzt über diese Bibliothek gelesen. – Noumi

+0

nur noch 1 Sache, kann ich 'Intervall' Spalte zuerst bringen – Noumi

+0

@Noumi Sicher kannst du. 'v = df ['Intervall']; del df ['Intervall']; df.insert (0, 'interval', v) '. Alternativ setzen Sie einfach den Index: 'df = df.set_index ('interval')' –

Verwandte Themen