2017-02-26 31 views
6

Próbuję przekonwertować słownik, który ma tylko 1 rekord na pandasową ramkę danych. Użyłem następujący kod z innymi rozwiązaniami:Jak przekonwertować słownik na pandową ramkę danych

d = {'id': 'CS2_056', 'cost': 2, 'name': 'Tap'} 

pd.DataFrame(d.items(), columns=['id', 'cost','name']) 

Ale pojawia się następujący błąd:

PandasError: DataFrame constructor not properly called! 
+2

Możliwa duplikat [Python słownika do Pandy Dataframe] (http://stackoverflow.com/questions/34589332/python-dictionary-to-pandas-dataframe) – McGrady

Odpowiedz

0

Choć kwestia ta ma duplikat (Python Dictionary to Pandas Dataframe), uważam, że jest to odpowiedź prostsza niż dostarczone tam.

Konwersja wartości na listach:

d = {'id': ['CS2_056'], 'cost': [2], 'name': ['Tap']}

po prostu:

df = pd.DataFrame(d) 
print(df) 
#  cost  id name 
# 0  2 CS2_056 Tap 


Należy pamiętać, że jeśli kolumny zamówić względu na to, że nadal trzeba jawnie dostarczyć columns do DataFrame :

df = pd.DataFrame(d, columns=['id', 'cost', 'name']) 
print(df) 
#   id cost name 
# 0 CS2_056  2 Tap 
16

Ty DICT ma tylko jeden rekord listy zastosowanie:

import pandas as pd 
d = {'id': 'CS2_056', 'cost': 2, 'name': 'Tap'} 
df = pd.DataFrame([d], columns=d.keys()) 
print df 

wyjściowa:

id cost name 
0 CS2_056  2 Tap 
+0

To działa. Wziąłem oryginalne rozwiązanie z innego pytania, ale może powodem, dla którego nie działa, było to, że miał tylko 1 rekord? – user3302483

0

Może być używasz python3. w python3 mamy listę tam

pd.DataFrame(list(d.items()), columns=['id', 'cost','name'])