2016-07-28 24 views
2

Der Versuch, für verschiedene Anwendungen Rang im Laufe der Zeit zu verfolgen:Verwandeln Liste der Wörterbücher

# I need to convert this list of dicts: 

[{"Date" : "7/1/16", "Foo": 32, "Bar" : 49, 'Spam': 55}, 
{"Date" : "7/2/16", "Foo": 43, "Bar" : 44, 'Spam': 77}, 
{"Date" : "7/3/16", "Foo": 23, "Bar" : 47, 'Spam': 63}] 

# Into this list of dicts: 

[{"AppTitle" : "Foo", "7/1/16" : 32, "7/2/16" : 43, "7/3/16" : 23}, 
{"AppTitle" : "Bar", "7/1/16" : 49, "7/2/16" : 44, "7/3/16" : 47}, 
{"AppTitle" : "Spam", "7/1/16" : 55, "7/2/16" : 77, "7/3/16" : 63}] 

Im Wesentlichen Ich brauche einen Datenrahmen zu schaffen, der mit einem Wrapper arbeiten ich für Pythons CSV-Modul eingebaut. Ich habe eine Menge Fragen über die Erstellung von Datenrahmen aus Listen von Diktaten durchgesehen, aber nichts passierte für mich.

Zum Vergleich: Foo, Bar, & Spam sind App-Titel, und die Zahl ist der Rang für das angegebene Datum

Antwort

2
import pandas as pd 
df = pd.DataFrame([{"Date" : "7/1/16", "Foo": 32, "Bar" : 49, 'Spam': 55}, 
        {"Date" : "7/2/16", "Foo": 43, "Bar" : 44, 'Spam': 77}, 
        {"Date" : "7/3/16", "Foo": 23, "Bar" : 47, 'Spam': 63}]) 

Von diesem Datenrahmen können Sie Ihr Ergebnis mit der Transponierung Methode erhalten:

df.set_index('Date').T.reset_index().rename(columns={'index': 'AppTitle'}).to_dict('r') 
Out: 
[{'7/1/16': 49, '7/2/16': 44, '7/3/16': 47, 'AppTitle': 'Bar'}, 
{'7/1/16': 32, '7/2/16': 43, '7/3/16': 23, 'AppTitle': 'Foo'}, 
{'7/1/16': 55, '7/2/16': 77, '7/3/16': 63, 'AppTitle': 'Spam'}] 
+0

Was muss ich hier importieren? ist es nur 'importieren pandas als pd'? –

+0

Ja, nur Pandas. – ayhan

+0

@BenjaminJames: Bitte beachten Sie, dass Pandas nicht Teil der integrierten Python-Standardmodule sind und möglicherweise von numpy abhängen (worüber ich mir nicht ganz sicher bin). – albert

Verwandte Themen