熊猫按几列分组

时间:2019-02-05 13:54:15

标签: python pandas pandas-groupby

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将每一列分组为列表,结果应该是

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 :(得分:0)

首先,我认为在good idea中使用list大熊猫不是一件好事。

但是如果确实需要,可以通过DataFrameGroupBy.agglist来实现:

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]
相关问题