Как объединить список фреймов данных на дату в гистограмму? Pandas Python - PullRequest
1 голос
/ 27 мая 2020

У меня есть этот список фреймов данных, и я хотел бы объединить их на дату (ось X) с другими столбцами (ось Y), чтобы создать гистограмму:

[        Date  Unavailability_mec_by_Month
0 2019-10-01                      2.235304
1 2019-11-01                      1.134355
2 2019-12-01                     19.392279
3 2020-01-01                     10.063748
4 2020-02-01                      0.731397,         Date  Unavailability_transport_by_Month
0 2019-12-01                            0.674824,         Date  Unavailability_stock_by_Month
0 2019-10-01                            0.228069
1 2019-11-01                            0.145258
2 2019-12-01                            0.202965
3 2020-01-01                            1.357004
4 2020-02-01                            0.550151,         Date  Unavailability_chain_by_Month
0 2019-11-01                            0.009746
1 2019-12-01                            0.003303
2 2020-01-01                            0.016242
3 2020-02-01                            0.003328,         Date  Unavailability_prod_by_Month
0 2019-10-01                                   14.620000
1 2019-11-01                                    0.447353
2 2019-12-01                                    4.822858
3 2020-01-01                                    5.565766
4 2020-02-01                                    0.435972

Я пробовал их, но они не работают:

from functools import reduce
#df_graph = reduce(lambda x, y: pd.merge(x, y, on = 'Date'), list_df_graph)
#reduce(lambda left,right: pd.merge(left,right,on='Date'), list_df_graph)
#merge=pd.merge(list_df_graph, how='outer', left_index=True, right_index=False)
df_graph = pd.concat(list_df_graph, axis=1)

И метод concat дал мне результат, но не ожидаемый.

Спасибо за ваше время!

РЕДАКТИРОВАТЬ Ожидаемый результат:

Date        Unavailability_mec_by_Month   Unavailability_transport_by_Month   ...
2019-10-01                     2.235304                            0.674824 
2019-11-01                     1.134355                                 NaN
2019-12-01                    19.392279                                 NaN
2020-01-01                    10.063748                                 NaN
2020-02-01                     0.731397                                 NaN

Но в настоящее время у меня есть столбец Дата для каждой недоступности _..., например:

Date              mec_by_Month         Date     transport_by_Month         Date  ...
2019-10-01            2.235304   2019-10-01               0.674824   2019-10-01
2019-11-01            1.134355          Nan                    NaN          NaN
2019-12-01           19.392279          Nan                    NaN          NaN
2020-01-01           10.063748          Nan                    NaN          NaN
2020-02-01            0.731397          Nan                    NaN          NaN

1 Ответ

0 голосов
/ 27 мая 2020

Преобразовать столбец Date в индекс, а затем concat в понимании списка для выравнивания значений по Dates (преобразовано в DatetimeIndex):

df_graph = pd.concat([x.set_index('Date') for x in list_df_graph], axis=1)

Или сначала столбец для индекса:

df_graph = pd.concat([x.set_index(x.columns[0]) for x in list_df_graph], axis=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...