如何解决python按多个键对字典进行分组
my_list = [{
"name": "alin","id": 2,"note": -10
},{
"name": "alin",{
"name": "milanie","id": 3,"note": 11
},{
"name": "martin","note": 11}]
我想按出现次数对它们进行分组,我已经这样做了:
my_list = [{
"name": "alin","note": -10,"occ": 3
},},"note": 11}]
我的问题是他如何按 id 和 note 分组并获得这样的字典:
{ "name": "martin","note": 11,"occ":2}
解决方法
你可以很容易地在 Pandas 中做到这一点。
import pandas as pd
my_list = [{
"name": "alin","id": 2,"note": -10
},{
"name": "alin",{
"name": "milanie","id": 3,"note": 11
},{
"name": "martin","note": 11}]
pd.DataFrame(my_list).groupby(['name','id','note']).size().reset_index(name='occ').to_dict('records')
输出
[{'name': 'alin','id': 2,'note': -10,'occ': 3},{'name': 'martin','id': 3,'note': 11,'occ': 1},{'name': 'milanie','occ': 1}]
编辑:
根据您的要求,您可以使用命名的 agg 来明确定义您的列和聚合。在这种情况下,我们将使用每个组的 last
名称来获取 martin
,但如果您愿意,您可以使用 first
来获取 melanie
。如果您需要一个特定的名称,您可能希望首先按名称对值进行排序,以保证您获得的名称。
pd.DataFrame(my_list).groupby(['id','note']).agg(name=('name','last'),occ=('id','count')).reset_index().to_dict('records')
输出
[{'id': 2,'name': 'alin',{'id': 3,'name': 'martin','occ': 2}]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。