Как транспонировать кадр данных pandas по столбцу и значению? - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть такой фрейм данных

Ввод

student_id  rep
abc100      1   
abc101      2
abc102      1
abc103      2
abc104      1
abc105      2
abc106      1
abc107      2

Ожидаемый вывод

1       2
abc100  abc101
abc102  abc103
abc104  abc105
abc106  abc107

Я пытался

df = df.pivot( columns='rep', values='student_id')

, но содержит много nans и не дает ожидаемого результата.

Я искал в stackoverflow, но не смог найти ответ.

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

Вы можете выбрать df, нарезав столбец, используя iloc и шаг arg:

>>> pd.DataFrame({'student_id':df['student_id'].iloc[::2].values, 'student_id_1':df['student_id'].iloc[1::2].values})
  student_id student_id_1
0     abc100       abc101
1     abc102       abc103
2     abc104       abc105
3     abc106       abc107

ИЛИ, наоборот, как @coldspeed предложил только для широкой видимости :-)

df.assign(index=df.groupby('rep').cumcount()).pivot('index', 'rep', 'student_id')
0 голосов
/ 17 декабря 2018

Для точного соответствия желаемому выводу вы можете сделать

df['aux'] = df.groupby('rep').cumcount()
df.pivot(index='aux' ,columns='rep', values='student_id')

Вывод:

rep       1       2
aux                
0    abc100  abc101
1    abc102  abc103
2    abc104  abc105
3    abc106  abc107
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...