pandas groupby单列,但添加多列的内容



我有一个像这样的数据框架

03573.045503562.003565.051503562.003563.003564.003564.003564.0

这也可以通过使用pandas中的pivot_table来实现。

下面是为您的代码重新创建的简单示例:

import numpy as np
import pandas as pd
df=pd.DataFrame({'buy':[1,2,3,0,3,2,1],
'sell':[2,3,4,0,5,4,3],
'bin':[1,2,1,2,1,2,1],
'time': [1,1,1,1,1,1,1]
})
df_output=df.pivot_table(columns='bin', values=['buy','sell'], aggfunc=np.sum)

输出如下所示:

bin     1   2
buy     8   4
sell    14  7

如果您想要您提到的输出:

我们可以对上面的数据帧输出进行转置:

df_output.T

或使用如下groupby输入dataframe:

df.groupby(['bin'])[['sell', 'buy']].sum()

输出如下:

sell buy
bin     
1   14  8
2   7   4

如果您还需要dataframe中的time,我们可以通过使用和分离each columnaggregate函数来实现:

df.groupby("bin").agg({ "sell":"sum", "buy":"sum", "time":"first"})

输出如下:

sell    buy time
bin         
1     14      8    1
2     7       4    1

最新更新