所以,我有这个数据框:
NAME TEST
0 Homer Simpson PASSED
1 Homer Simpson FAILED
2 Homer Simpson FAILED
3 Marge Simpson PASSED
4 Marge Simpson PASSED
5 Lisa Simpson PASSED
6 Bart Simpson FAILED
7 Maggie Simpson FAILED
我的目标是创建一个列,其中包含TEST列的值,这些值基于NAME列相加在一起。
NAME TEST RESUME
0 Homer Simpson PASSED [PASSED: 1, FAILED: 2]
1 Marge Simpson PASSED [PASSED: 2]
3 Lisa Simpson PASSED [PASSED: 1]
4 Bart Simpson FAILED [FAILED: 1]
5 Maggie Simpson FAILED [FAILED: 1]
到目前为止,我使用了:
df.groupby('ID')['TEST'].nunique()
但这只是把值加起来,我想要的是有这些值以及它们在每个名称中出现的次数。
Bart Simpson 1
Homer Simpson 2
Lisa Simpson 1
Maggie Simpson 1
Marge Simpson 1
你能帮帮我吗?谢谢!
3条答案
按热度按时间w9apscun1#
您可以在
GroupBy.agg
中使用collections.Counter
:对于联接值列表:
对于连接字符串:
qxgroojn2#
我们可以使用
collections
标准库中的Counter
这使得"TEST"列成为字典值,我们可以使用该字典值来实现逻辑,以确定学生是否通过考试
| 姓名|测试|
| - ------|- ------|
| 巴特·辛普森|计数器({"失败":1})|
| 荷马·辛普森|计数器({"失败":2,"通过":1})|
| 丽莎·辛普森|计数器({"通过":1})|
| 玛吉·辛普森|计数器({"失败":1})|
| 玛吉·辛普森|计数器({"通过":第2条)|
x8goxv8g3#
您可以用途:
输出:
或者:
输出: