将相同id对应的其他行元素合同到同一个列表中,使用 tolist()
# 数据集如下
In [8]: A = [1,2,3,0]
In [9]: B = [1,1,2,2]
In [10]: ID = [0,0,1,1]
In [13]: df = pd.DataFrame(zip(A,B,ID), columns=['A','B','ID'])
Out[14]:
A B ID
0 1 1 0
1 2 1 0
2 3 2 1
3 0 2 1
# 要求的输出结果如下
A B id
0 [1, 2] [1, 1] 0
1 [3, 0] [2, 2] 1
实现方法如下:
df.groupby(‘ID’, as_index=False).agg(lambda x: x.tolist())
In [15]: df.groupby('ID').agg(lambda x: x.tolist())
Out[15]:
A B
ID
0 [1, 2] [1, 1]
1 [3, 0] [2, 2]
In [16]: df.groupby('ID', as_index=False).agg(lambda x: x.tolist())
Out[16]:
ID A B
0 0 [1, 2] [1, 1]
1 1 [3, 0] [2, 2]