我有以下数据框:
| 姓名|身份证|型号|
| - ------|- ------|- ------|
| 爱丽丝|爱丽丝_1|(甲_01)、(甲_02)|
| 鲍勃|bob_1|(B_01)|
| 爱丽丝|爱丽丝_2|(第一页)、(第五页)|
| 爱丽丝|alice_3|(第一页)、(第五页)|
| 鲍勃|bob_2|(B_01)|
| 鲍勃|鲍勃3|(B_01)|
我想计算括号内的唯一模型值,并将计数附加到括号前面,如下所示:
| 姓名|型号|
| - ------|- ------|
| 爱丽丝|3次(A_01)、2次(A_05)、1次(A_02)|
| 鲍勃|3个(B_01)|
我尝试使用不同的方法来处理group by和aggregate函数,但没有找到方法。我也可以使用值计数并计算每个Model,但我不知道如何将结果数字附加到整个数据框中。
2条答案
按热度按时间kse8i1jr1#
使用
Series.str.split
和DataFrame.explode
,通过,
连接值获得新行,然后通过GroupBy.size
获得计数,排序并添加到Model
列,最后聚合join
:gg58donl2#
在
split
+explode
之后,在groupby.agg
和collections.Counter
的帮助下使用自定义聚合:输出:
如果希望值按频率排序(而不是所见顺序),请使用
Counter(g).most_common()
代替Counter(g).items()
:输出: