Ale*_*lex 8 python dataframe pandas
说我有一个pandas DataFrame,例如:
A B id
0 1 1 0
1 2 1 0
2 3 2 1
3 0 2 1
Run Code Online (Sandbox Code Playgroud)
假设我想组合具有相同id的行,以便行中的其他元素放在一个列表中,以便上面的数据帧将变为:
A B id
0 [1, 2] [1, 1] 0
1 [3, 0] [2, 2] 1
Run Code Online (Sandbox Code Playgroud)
作为前两行,最后两行具有相同的id.大熊猫有功能吗?我知道pandas groupby命令,但我希望返回类型也是一个数据帧.谢谢.
Ant*_*pov 12
您可以使用groupbypandas 系列的groupby agg方法和tolist方法:
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]
Run Code Online (Sandbox Code Playgroud)
groupby 根据需要返回Dataframe:
In [763]: df1 = df.groupby('id').agg(lambda x: x.tolist())
In [764]: type(df1)
Out[764]: pandas.core.frame.DataFrame
Run Code Online (Sandbox Code Playgroud)
要完全符合您的预期的结果,你可以做另外reset_index也可以使用as_index=False在groupby:
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]
Run Code Online (Sandbox Code Playgroud)