2016-01-06 2 views
1

Я новичок в панд, и мне нужно, чтобы включить список с внутренними словарях в DataFramePython/Панды - Превратить список с внутренними словарях в DataFrame

Ниже приведен пример списка:

[('Fwd1', {'Score': 1.0, 'Prediction': 7.6, 'MAPE': 2.37}), ('Fwd2', {'Score': 1.0, 'Prediction': 7.62, 'MAPE': 2.57}), ('Fwd3', {'Score': 1.0, 'Prediction': 7.53, 'MAPE': 2.54})] 

Я хотел бы, чтобы выглядеть следующим образом:

 Prediction MAPE Score            
Date              
Fwd1   7.6 2.37  1 
Fwd2   7.62 2.57  1 
Fwd3   7.53 2.54  1 

Любой доступный просветить мой путь?

ответ

2

Сначала вы можете преобразовать list из tuples в dict, а затем создать dataframe. К сожалению, в этой структуре индекс и столбцы нужно поменять местами для желаемого вывода, поэтому вам необходимо его транспонировать.

Предположим x Ваш список:

In [18]: dict(x) 
Out[18]: 
{'Fwd1': {'MAPE': 2.37, 'Prediction': 7.6, 'Score': 1.0}, 
'Fwd2': {'MAPE': 2.57, 'Prediction': 7.62, 'Score': 1.0}, 
'Fwd3': {'MAPE': 2.54, 'Prediction': 7.53, 'Score': 1.0}} 

In [19]: pd.DataFrame(dict(x)) 
Out[19]: 
      Fwd1 Fwd2 Fwd3 
MAPE  2.37 2.57 2.54 
Prediction 7.60 7.62 7.53 
Score  1.00 1.00 1.00 

In [20]: pd.DataFrame(dict(x)).T 
Out[20]: 
     MAPE Prediction Score 
Fwd1 2.37  7.60  1 
Fwd2 2.57  7.62  1 
Fwd3 2.54  7.53  1 
+0

Отлично. Теперь мне нужно изменить порядок столбцов, чтобы «Прогноз» был первым. Вы знаете, как я могу это сделать? – abutremutante

+1

Словарь Python не гарантирует порядок. Вот почему колонки имеют другой порядок, чем то, что появляется в словаре. Вы можете упорядочить столбцы как df = df [['Prediction', 'MAPE', 'Score']] – Happy001

+0

Отлично, вот что мне нужно – abutremutante

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