У меня есть несколько таблиц БД, сохраненных в разных файлах CSV / DataFrame с месяцами данных каждый DF. С данными график c строится с помощью matplotlib. Он отображает все данные, когда в любой таблице для Rank1 все значения заполнены, однако, если в таблице Rank1 мало строк, график c занимает столько строк, сколько у таблицы.
Я извлек образец DF для показа проблемы, столбец времени - это ряд данных и времени, который связывает DF:
df1 = [index,time],
[0,2020-03-21 01:20:00],
[1,2020-03-21 02:20:00],
[2,2020-03-21 03:20:00],
[3,2020-03-21 04:20:00],
[4,2020-03-21 05:20:00],
[5,2020-03-21 06:20:00],
[6,2020-03-21 07:20:00]]
df2 = [[index,time,8LYCUG89Q],
[1,2020-03-21 02:20:00,5939],
[2,2020-03-21 03:20:00,6000],
[3,2020-03-21 04:20:00,6000]]
df3 = [[index,time,P99YQPU0R],
[0,2020-03-20 23:20:00,5709],
[1,2020-03-21 00:20:00,5709],
[2,2020-03-21 01:20:00,5709],
[3,2020-03-21 02:20:00,5709],
[4,2020-03-21 03:20:00,5709],
[5,2020-03-21 04:20:00,5709],
[6,2020-03-21 05:20:00,5709]]
df4 = [[index,time,90QCVGVPG],
[0,2020-03-20 23:20:00,5611],
[1,2020-03-21 00:20:00,NaN],
[2,2020-03-21 01:20:00,5611],
[3,2020-03-21 02:20:00,5611],
[4,2020-03-21 03:20:00,NaN],
[5,2020-03-21 04:20:00,5611],
[6,2020-03-21 05:20:00,5611]]
df5 = [[index,time,LLQ9URY],
[0,2020-03-20 23:20:00,NaN],
[1,2020-03-21 00:20:00,5603],
[2,2020-03-21 01:20:00,5603],
[3,2020-03-21 02:20:00,5603],
[4,2020-03-21 03:20:00,5576],
[5,2020-03-21 04:20:00,5576],
[6,2020-03-21 05:20:00,NaN]]
df6 = [[index,time,UV0R8U0],
[0,2020-03-20 23:20:00,5545],
[1,2020-03-21 00:20:00,5545],
[2,2020-03-21 01:20:00,5545],
[3,2020-03-21 02:20:00,5545],
[4,2020-03-21 03:20:00,5545],
[5,2020-03-21 04:20:00,5545],
[6,2020-03-21 05:20:00,5545]]
для результата DF. Я ожидаю получить DF со значениями NaN для Rank1 если таблица фактически не заполняется во временном столбце из DF1, например:
index time 8LYCUG89Q P99YQPU0R 90QCVGVPG LLQ9URY UV0R8U0
0 2020-03-20 23:20:00 NaN 5709 5611 NaN 5545
1 2020-03-21 00:20:00 NaN 5709 NaN 5603 5545
2 2020-03-21 01:20:00 NaN 5709 5611 5603 5545
3 2020-03-21 02:20:00 NaN 5709 5611 5603 5545
4 2020-03-21 03:20:00 5939 5709 NaN 5576 5545
5 2020-03-21 04:20:00 6000 5709 5611 5576 5545
6 2020-03-21 05:20:00 6000 5709 5611 NaN 5545
Фрагмент для получения окончательного DF равен
colnametop = ['8LYCUG89Q', 'P99YQPU0R', '90QCVGVPG', 'LLQ9URY', 'UV0R8U0']
finaltop_df = pd.DataFrame(columns=['time'])
for i in colnametop:
memdata = pd.read_csv("file_path",i),usecols=['time','data'],parse_dates=['time']).rename(columns={'data':i})
finaltop_df = pd.merge(finaltop_df,memdata,on='time')
finaltop_df
В результате получается DF, ниже которого я прокомментировал выше берет только данные на DF2 и отбрасывает любое время данных из df1, который не заполнен, даже если он есть у Rank2 ~ Rank 4.
Результат в окончательном графике c теряется при представлении данных.
index time 8LYCUG89Q P99YQPU0R 90QCVGVPG LLQ9URY UV0R8U0
0 2020-03-21 03:20:00 5939 5709 NaN 5576 5545
1 2020-03-21 04:20:00 6000 5709 5611 5576 5545
2 2020-03-21 05:20:00 6000 5709 5611 NaN 5545
Спасибо за ваши подсказки