Панды группируют несколько столбцов по одному - PullRequest
0 голосов
/ 05 февраля 2019
Id    1    2    3    4

z1    3    0    2    2 
z1    1    4    4    3
z2    8    1    7    9
z2    0    0    2    3
z2    5    6    7    9
z3    0    5    6    2
z3    4    4    8    2

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

Id    1      2      3      4

z1   [3,1]  [0,4]  [2,4]  [2,3]
z2 [8,0,5][1,0,6][7,2,7][9,3,9]
z3   [0,4]  [5,4]  [6,8]  [2,2]

Так вот, что я мог бы сделать каждый столбец отдельно, но ясделал это, и теперь мне нужно оптимизировать это, есть ли способ сделать это один раз для каждого столбца?Если нет, может быть, есть способ, который работает быстрее, чем pandas.groupby ??

1 Ответ

0 голосов
/ 05 февраля 2019

Сначала я думаю, что работать с list s в пандах - это не хорошая идея .

Но если это действительно нужно, это можно сделать DataFrameGroupBy.agg с list:

df = df.groupby('Id').agg(list)
print (df)
            1          2          3          4
Id                                            
z1     [3, 1]     [0, 4]     [2, 4]     [2, 3]
z2  [8, 0, 5]  [1, 0, 6]  [7, 2, 7]  [9, 3, 9]
z3     [0, 4]     [5, 4]     [6, 8]     [2, 2]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...