假设这是我的df
test_urllib test_urllib2 test_urllib2net
Makefile:958: recipe for target 'test' failed
make: *** [test] Error 1
然后我尝试得到这样的东西
A B C
0 a 33 13
1 b 44 14
2 a 55 15
3 a 66 16
4 b 77 17
5 c 88 18
有什么Python方法可以做到吗?
这是我的代码,但不是pythonic
A B B C
count list sum
0 a 3 33,55,66 44
1 b 2 44,77 31
2 c 1 88 81
答案 0 :(得分:3)
您可以将字典传递给agg:
In [11]: df.groupby("A").agg({"B": ["count", list], "C": ["sum"]})
Out[11]:
B C
count list sum
A
a 3 [33, 55, 66] 44
b 2 [44, 77] 31
c 1 [88] 18
要添加逗号,我将使用一个函数:
In [21]: def list_(ls):
...: return ",".join(map(str, ls))
...:
In [22]: list_.__name__ = "list"
In [23]: df.groupby("A").agg({"B": ["count", list_], "C": ["sum"]})
Out[23]:
B C
count list sum
A
a 3 33,55,66 44
b 2 44,77 31
c 1 88 18