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
对于该示例,您希望的输出是什么?