2017-10-08 1 views
1

referencePython: Wie Dataframe Spalten aus einer dict in einer Liste

Ich habe einen dict mit Ausgang in dieser Form erstellen:

response['candles'][0:2] 

[{'complete': True, 
    'mid': {'c': '0.91535', 'h': '0.91535', 'l': '0.91535', 'o': '0.91535'}, 
    'time': '2002-05-06T21:00:00.000000000Z', 
    'volume': 1}, 
{'complete': True, 
    'mid': {'c': '0.90435', 'h': '0.90435', 'l': '0.90435', 'o': '0.90435'}, 
    'time': '2002-05-07T21:00:00.000000000Z', 
    'volume': 1}] 

ich einen Datenrahmen erstellen kann leicht das sieht wie folgt aus:

res = pd.DataFrame(response['candles']) 

complete mid time volume 
0 True {'o': '0.91535', 'h': '0.91535', 'l': '0.91535... 2002-05-06T21:00:00.000000000Z 1 
1 True {'o': '0.90435', 'h': '0.90435', 'l': '0.90435... 2002-05-07T21:00:00.000000000Z 1 

I 'Mitte' dict Produkte wie diese zugreifen können:

response['candles'][0]['mid']['c'] 

'0.91535' 

Aber wie füge ich Spalten in meinem Dataframe für jedes "mittlere" Element hinzu, anstatt ein Diktat im Datenrahmen zu haben? Ich möchte eine Spalte für ['Mitte'] ['o'], ['Mitte'] ['h'] und so weiter.

Dank

Antwort

1

Verwendung pandas.io.json.json_normalize:

d = [{'complete': True, 
    'mid': {'c': '0.91535', 'h': '0.91535', 'l': '0.91535', 'o': '0.91535'}, 
    'time': '2002-05-06T21:00:00.000000000Z', 
    'volume': 1}, 
{'complete': True, 
    'mid': {'c': '0.90435', 'h': '0.90435', 'l': '0.90435', 'o': '0.90435'}, 
    'time': '2002-05-07T21:00:00.000000000Z', 
    'volume': 1}] 

pd.io.json.json_normalize(d) 
#complete  mid.c mid.h mid.l mid.o       time volume 
#0 True 0.91535 0.91535 0.91535 0.91535 2002-05-06T21:00:00.000000000Z 1 
#1 True 0.90435 0.90435 0.90435 0.90435 2002-05-07T21:00:00.000000000Z 1 
+0

Könnte man Gebrauch '' 'gelten (pd.Series)' ''? –

+0

@LiamHealy Ja. Das funktioniert auch. – Psidom

+0

Super, danke !!! Habe nicht gemerkt, dass es JSON-Format war ... – cadig

Verwandte Themen