【发布时间】:2022-01-15 08:19:19
【问题描述】:
我有带有 id 编号的字典列表,我需要按 main_id 和 second_id 对其进行分组,并计算每个组中的值。达到此目的的最佳 Python 方法是什么?
我尝试过使用 Pandas,但没有得到包含组和计数的 dict
df = pd.DataFrame(data_list)
df2 = df.groupby('main_id').apply(lambda x: x.set_index('main_id')['second_id']).to_dict()
print(df2)
列表如下:
[
{
"main_id":34,
"second_id":"2149"
},
{
"main_id":82,
"second_id":"174"
},
{
"main_id":24,
"second_id":"4QCp"
},
{
"main_id":34,
"second_id":"2149"
},
{
"main_id":29,
"second_id":"126905"
},
{
"main_id":34,
"second_id":"2764"
},
{
"main_id":43,
"second_id":"16110"
}
]
我需要这样的结果:
[
{
"main_id":43,
"second_id":"16110",
"count": 1
},
{
"main_id":34,
"second_id":"2149",
"count": 2
}
]
【问题讨论】:
-
你看过
itertools.groupby了吗? -
StackOverflow 不是免费的编码服务。你应该try to solve the problem first。请更新您的问题以在minimal reproducible example 中显示您已经尝试过的内容。如需更多信息,请参阅How to Ask,并拨打tour :)
-
@chepner
groupby()将同一组中的连续元素分组。除非她先对列表进行排序,否则这些组不会是连续的。 -
@Barmar 当然,
groupby的文档中特别提到了这一点。我从来没有说过像groupby(the_list)这样简单的话就是答案。 -
您可以将列表转换为 pandas 数据框并使用其分组和计数方法。
标签: python pandas list dataframe group-by