Преобразуйте несколько строк в одну строку с помощью панд - PullRequest
0 голосов
/ 29 апреля 2018

Я уверен, что это довольно легко сделать, но я не могу понять это. Я пишу на python и использую панды для работы с фреймами данных. Мой фрейм данных выглядит так:

a b  c
1 10 20
1 30 40
1 60 70
1 80 100
2 10 20
2 60 70
2 80 100

И я хотел бы преобразовать это так:

a b1 c1 b2 c2 b3 c3 b4 c4
1 10 20 30 40 60 70 80 100
2 10 20 60 70 80 100 NA NA

В основном для каждой строки, где значение в a одинаково, принимают значения в b и c и преобразуют их в новые столбцы, так что я получаю только одну строку для каждого значения в a.

Надеюсь, я достаточно ясно, если не стесняйтесь, сообщите мне. Заранее благодарим за любую помощь!

Флориан.

1 Ответ

0 голосов
/ 29 апреля 2018

Нам нужно создать ключ справки здесь, используя cumcount

s=df.assign(key=df.groupby('a').cumcount()+1).set_index(['a','key']).stack().unstack([1,2])
s.columns=s.columns.map('{0[1]}{0[0]}'.format)
s
Out[396]: 
     b1    c1    b2    c2    b3     c3    b4     c4
a                                                  
1  10.0  20.0  30.0  40.0  60.0   70.0  80.0  100.0
2  10.0  20.0  60.0  70.0  80.0  100.0   NaN    NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...