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