Python 数据帧groupby应用并沿分组轴重新展开

Python 数据帧groupby应用并沿分组轴重新展开,python,dataset,pandas,Python,Dataset,Pandas,假设我有一个数据帧 A B C D 2019-01-01 1 10 100 12 2019-01-02 2 20 200 23 2019-01-03 3 30 300 34 和一个数组来对列进行分组 array([0, 1, 0, 2]) 我希望按数组(在列轴上)对数据帧进行分组,应用一个函数,然后返回一个列数长度的序列,其中包含每列上应用函数的结果 因此,对于上述情况(应用函数取组的和),我们希望输出: A 606 B

假设我有一个数据帧

            A   B   C   D
2019-01-01  1   10  100 12
2019-01-02  2   20  200 23
2019-01-03  3   30  300 34
和一个数组来对列进行分组

array([0, 1, 0, 2])
我希望按数组(在列轴上)对数据帧进行分组,应用一个函数,然后返回一个列数长度的序列,其中包含每列上应用函数的结果

因此,对于上述情况(应用函数取组的和),我们希望输出:

A    606
B     60
C    606
D     69
dtype: int64
我的最佳尝试:

func = lambda a: np.full(a.shape[1], np.sum(a.values))
df.groupby(groups, axis=1).apply(func)

0    [606, 606]
1          [60]
2          [69]
dtype: object
(在本例中,应用函数在组内返回相等的值,但在实际情况下不能保证这一点)

我看不出如何使用分组语法来实现这一点,除非我遗漏了一些东西。谁能帮帮忙,谢谢

试试这个:

将numpy导入为np
作为pd进口熊猫
组=[0,1,0,2]
df=pd.DataFrame({'A':[1,2,3],
“B”:[10,20,30],
‘C’:[100200300],
"D":[12,23,34]}
temp=df.apply(sum.)to_frame()
temp.index=pd.MultiIndex.from_数组(
np.堆栈([临时索引,组]),
名称=(“df列”、“组”)
)
temp_filter=temp.groupby(级别=1).agg(总和)
结果=临时联接(临时过滤器,rsuffix='0')\
设置索引(临时索引获取级别值(0))[“00”]
#df列
#A 606
#B 60
#C606
#D 69
#名称:00,数据类型:int64

对于该示例,您希望的输出是什么?