2016-07-28 3 views
2

Попытки отслеживать ранг с течением времени для различных приложений:Трансмутации список словарей

# 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}] 

По существу, мне нужно создать dataframe, который будет работать с оберткой я построил для модуля CSV питона. Я просмотрел множество вопросов, связанных с созданием dataframes из списков dicts, но ничего не отвечало моим потребностям.

Для справки: Foo, Bar, & Спам являются App названия, и номер ранга для указанной даты

ответ

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}]) 

Из этого DataFrame, вы можете получить результат, используя метод транспозиции:

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

Что мне нужно импортировать здесь? это просто 'import pandas as pd'? –

+0

Да, просто панды. – ayhan

+0

@BenjaminJames: Пожалуйста, имейте в виду, что панды не являются частью встроенных стандартных модулей Python и могут зависеть от numpy (о чем я не совсем уверен). – albert

Смежные вопросы