连接具有相同id的pandas DataFrame行

时间:2016-01-13 20:43:01

标签: python pandas dataframe

假设我有一个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 groupby命令,但我希望返回类型也是一个数据帧。感谢。

1 个答案:

答案 0 :(得分:11)

您可以使用groupby方法使用groupby agg方法和Pandas系列的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]

groupby根据需要返回Dataframe:

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

In [764]: type(df1)
Out[764]: pandas.core.frame.DataFrame

要完全符合您的预期结果,您还可以在reset_indexas_index=Falsegroupby使用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]

<form id="myForm" action="select.php" method="post">
    <input type="number" name="numbervalue" id="numberinput" min="1" max="36">
    <input type="submit" id="sub" Value="Submit">
    <span id="result"></span>
</form>