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更快?
答案 0 :(得分:0)
首先,我认为在good idea中使用list
大熊猫不是一件好事。
但是如果确实需要,可以通过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]