Объединение нескольких кадров данных вместе для разных форматов временных меток в одну временную метку

#python #pandas #dataframe #datetime #strptime

Вопрос:

У меня есть несколько фреймов данных, каждый из которых содержит данные в диапазоне от 1 до 1440 минут (один день).Все фреймы данных одинаковы, имеют одинаковые столбцы и одинаковую длину. Значения столбца времени приведены в hhmm формате. Допустим, df_A содержит данные за 1-й день, то есть 2021-05-06 Это выглядит так.

 >df_A
timestamp    col1   col2.....  col80
0
1
2
.
.
.
2359
 

И данные на следующий день находятся в df_B, что тоже совпадает. Дата такая 2021-05-07

 >df_B
timestamp    col1   col2.....  col80
0
1
2
.
.
.
2359
 

Как я мог бы сложить их вместе друг под другом и создать один кадр данных, идентифицируя каждую строку столбцом, имеющим значения в формате, например YYYYMMDD HH:mm . Которая несколько будет выглядеть так:

 >df
timestamp      col1    col2.....  col80
20210506 0000
20210506 0001
.
.
20210506 2359
20210507 0000
.
.
20210507 2359
 

Как я мог бы достичь этого, имея дело с несколькими фреймами данных одновременно?

Комментарии:

1. Если имена столбцов одинаковы, то вы можете добавить оба df…то есть df1.append(df2)

2. @AnuragDabas Путаница заключается в том, как решить проблему с датой и временем. Добавлять легко. Но изменение их формата даты-времени и объединение их в нужный мне формат даты-времени-вот где я застрял.

Ответ №1:

 df_A = pd.DataFrame(range(0, 10), columns=['timestamp'])
df_B = pd.DataFrame(range(0, 10), columns=['timestamp'])


df_A['date'] = pd.to_datetime('2021-05-06 '   
                              df_A['timestamp'].astype(str).str.zfill(4), format='%Y-%m-%d %H%M')

df_B['date'] = pd.to_datetime('2021-05-07 '   
                              df_A['timestamp'].astype(str).str.zfill(4), format='%Y-%m-%d %H%M')

df_final = pd.concat([df_A, df_B])

df_final
 
     timestamp   date
0   0   2021-05-06 00:00:00
1   1   2021-05-06 00:01:00
2   2   2021-05-06 00:02:00
3   3   2021-05-06 00:03:00
4   4   2021-05-06 00:04:00
5   5   2021-05-06 00:05:00
6   6   2021-05-06 00:06:00
7   7   2021-05-06 00:07:00
8   8   2021-05-06 00:08:00
9   9   2021-05-06 00:09:00
0   0   2021-05-07 00:00:00
1   1   2021-05-07 00:01:00
2   2   2021-05-07 00:02:00
3   3   2021-05-07 00:03:00
4   4   2021-05-07 00:04:00
5   5   2021-05-07 00:05:00
6   6   2021-05-07 00:06:00
7   7   2021-05-07 00:07:00
8   8   2021-05-07 00:08:00
9   9   2021-05-07 00:09:00
 

Комментарии:

1. Я столкнулся с этой ошибкой ` Ошибка значения: данные о времени «2021-03-210001» не соответствует формату «%Y-%m-%d %H%M » (совпадение)«. Не знаю, почему

2. правильно ли вы скопировали, что между %Y-%m-%d форматом и %Y-%m-%d «нравится» есть пробел '2021-03-21 0001' %Y-%m-%d %H%M ? И почему вы столкнулись с этой ошибкой? Что ты пытаешься сделать? Я уже поставил пробел '2021-05-06 ' ... смотрите пробел после 06

3. Я приношу свои извинения, это прекрасно работает. Я допустил какую-то ошибку в пространстве. Огромное спасибо