У меня есть данные в фреймах данных вида (имена столбцов и значений - пустышки):
frame1 =
AA BB
Date_Time
2001 1 5
2002 2 6
2017 3 7
2018 4 8
frame2 =
AA BB
Date_Time
2001 10 50
2002 20 60
2017 30 70
2018 40 80
Я хотел бы объединить и преобразовать их в фрейм данных длинной формы, который будет визуализирован с помощью seaborn
. Так:
frame =
stn origin value
Date
2001 AA f1 1
f2 10
BB f1 5
f2 50
...
...
2018 AA f1 4
f2 40
BB f1 8
f2 80
Как я могу это сделать? У меня нет никакого кода, чтобы показать, потому что пара нерешительных попыток, которые я предпринял, ни к чему не привели, чего я хочу.
pd.concat должен работать, чтобы объединить фреймы данных. Не могу понять изменение формы с образцами данных
merged_df = pd.concat([frame1,frame2])
Что ж, Равишанкар указал мне правильное направление. С некоторыми поисками я нашел (почти), как это сделать, используя concat
с групповыми ключами и двойным стеком:
foo = pds.concat(dict(f1 = frame1, f2 = frame2), axis=1)
foo.stack().stack()
Date
2001 AA f1 1
f2 10
BB f1 5
f2 50
2002 AA f1 2
f2 20
BB f1 6
f2 60
Однако этот метод создаст серию с мультииндексом, что подходит не для всех ситуаций.
Чтобы создать фрейм данных с одним индексом (годами), можно использовать следующее:
bar = foo.stack().stack().reset_index(level=[1,2]).
Затем столбцы можно переименовать в соответствии с необходимостью.
Для будущих пользователей, у которых может возникнуть такая же проблема, было бы лучше, если бы вы приняли свой собственный ответ. Слияние, предложенное в другом ответе, явно не дает того, что вы искали.
Я должен ждать, пока система позволит мне это сделать, через два дня.
Моя проблема не в том, как объединить кадры данных, а в том, как изменить результат. В частности, я хотел бы иметь столбец для указания кадра данных происхождения значения (потому что это результат разработки с разными параметрами).