Python 连接具有相同id的数据帧行

Python 连接具有相同id的数据帧行,python,pandas,dataframe,Python,Pandas,Dataframe,假设我有一个数据帧,例如: A B id 0 1 1 0 1 2 1 0 2 3 2 1 3 0 2 1 假设我想要组合具有相同id的行,以便将行中的其他元素放在一个列表中,这样上面的数据框将变成: A B id 0 [1, 2] [1, 1] 0 1 [3, 0] [2, 2] 1 因为前两行和后两行都有相同的id。pandas有这样做的功能吗?我知道pandas-groupby命令,但我希望返回类型也

假设我有一个数据帧,例如:

   A  B  id
0  1  1   0
1  2  1   0
2  3  2   1
3  0  2   1
假设我想要组合具有相同id的行,以便将行中的其他元素放在一个列表中,这样上面的数据框将变成:

     A       B     id
0  [1, 2]  [1, 1]   0
1  [3, 0]  [2, 2]   1

因为前两行和后两行都有相同的id。pandas有这样做的功能吗?我知道pandas-groupby命令,但我希望返回类型也是数据帧。谢谢。

您可以使用groupby
agg
方法和熊猫系列方法:

In [762]: df.groupby('id').agg(lambda x: x.tolist())
Out[762]: 
         A       B
id                
0   [1, 2]  [1, 1]
1   [3, 0]  [2, 2]
groupby
根据需要返回数据帧:

In [763]: df1 = df.groupby('id').agg(lambda x: x.tolist())

In [764]: type(df1)
Out[764]: pandas.core.frame.DataFrame
为了精确匹配您的预期结果,您还可以在
groupby
中执行
reset\u index
或使用
as\u index=False

In [768]: df.groupby('id', as_index=False).agg(lambda x: x.tolist())
Out[768]: 
   id       A       B
0   0  [1, 2]  [1, 1]
1   1  [3, 0]  [2, 2]

In [771]: df1.reset_index()
Out[771]: 
   id       A       B
0   0  [1, 2]  [1, 1]
1   1  [3, 0]  [2, 2]

我知道pandas-groupby命令,但我希望返回类型也是数据帧。谢谢