假设这是我的 df
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
我试着得到这样的东西
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
有什么pythonic的方法可以做到吗?
这是我的代码,但不是pythonic
df.groupby('A').agg({'B': ["count", lambda x: ','.join(x.astype(str))], 'C':sum})
最佳答案
您可以将字典传递给 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
关于python - 在 Pandas GroupBy 中计算和连接整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55331252/