我正在尝试将任何函数传递给Pandas DataFrame.GroupBy
对象,以便能够将任何预定义的函数指针应用于DataFrame
对象。但是,当我这样做时,行为似乎会改变。
group_test.groupby(groupby_indexes).sum()
产生的结果与
不同group_test.groupby(groupby_indexes).apply(sum)
前一种解决方案是添加GroupedBy变量的列,并且不能正确地对这些列求和。
另一方面,对于Python的sum
和Panda的DataFrame.sum
,以下内容似乎无效,因为会产生错误:
fun = Pandas.core.groupby.GroupBy.sum
group_test.groupby(groupby_indexes).apply(fun)
一个示例,第一个选项的输出(期望和正确):
a b c
name week
Test 4 1 1 1
6 1 0 0
7 2 2 2
16 1 1 1
18 2 2 2
20 1 1 1
以及使用apply函数的输出(不正确):
name week a b c
name week
test 0 test test 0 2 1 1
1 test 1 1 1 1
2 test 2 1 0 0
3.0 test 3 1 1 1
4.0 test test 8 2 0 0
5.0 test test test 15 3 1 1
6.0 test 6 1 1 1
7.0 test 7 1 0 0
8.0 test test 16 2 0 0
9.0 test 9 1 0 0
11.0 test test 22 2 0 0
12.0 test 12 1 1 1
13.0 test 13 1 1 1
15.0 test 15 1 0 0
16.0 test 16 1 1 1
17.0 test 17 1 1 1
18.0 test 18 1 1 1
我找到了解决方案,请使用Pandas.Core.GroupBy.Agg
。