Python / Pandas: как объединить фреймы данных и преобразовать их в длинную форму? - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть данные в таких фреймах данных (имена столбцов и значения являются фиктивными):

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

Как я могу это сделать?У меня нет кода для показа, потому что пара нерешительных попыток, которые я предпринял, ни в коей мере не приблизились к тому, что я хочу.

Ответы [ 2 ]

3 голосов
/ 10 апреля 2019

Ну, Равишанкар указал мне в правильном направлении. В процессе поиска я нашел (почти), как это сделать, используя 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]).

Затем столбцы могут быть переименованы в соответствии с необходимостью.

1 голос
/ 10 апреля 2019

pd.concat должен работать для объединения фреймов данных.Не могу понять изменение формы с образцами данных

merged_df = pd.concat([frame1,frame2])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...