我有一个熊猫DataFrame
已被分组在两列,以及一个自定义函数,计算每个分组的行集的值的元组。 我想收集一个数据框中的结果,用原始组索引编制索引。当我使用apply()
时,我得到一个Series
具有正确的索引,但具有元组形式的值。我应该如何编写我的函数才能使结果成为一个数据框,并按照每个组的标签进行索引?作为数据框返回聚合值
下面是基于教程中的数据框的示例。
df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
'foo', 'bar', 'foo', 'foo'],
'B' : ['one', 'one', 'two', 'three',
'two', 'two', 'one', 'three'],
'C' : 1,
'D' : range(0, 8) })
groups = df.groupby(("A", "B"))
def myfunc(grp):
return len(grp), sum(grp["D"])
result = groups.apply(myfunc)
print(type(result))
print(result)
输出:
<class 'pandas.core.series.Series'>
A B
bar one (1, 4)
three (1, 8)
two (1, 12)
foo one (2, 16)
three (1, 16)
two (2, 16)
我想的结果是一个数据帧,例如列名为“大小”和“总和”。我的聚合函数应该是什么样的,我还需要做什么来访问结果的每一行的单个标签(列A
和B
)?
的字典就是爽! –