Python Pandas:如何从DataFrame生成值为列表的分组字典
实现按feature_id聚合tag_id生成目标字典的方法
你之前写的df.reset_index().to_dict(orient='list')逻辑有问题,这个方法是将DataFrame的每一列整体转为列表,以列名作为字典键,并不会按照feature_id做分组聚合,因此无法得到预期结果。
可以直接用pandas原生的分组聚合方法实现,代码最简洁:
# 基于你已构造好的df直接运行即可 data_dict = df.groupby('feature_id')['tag_id'].agg(list).to_dict()
运行后得到的data_dict完全匹配你的预期输出:
{1326: [2468, 2415, 2589], 1327: [2419, 2439], 1328: [2580, 2689]}
如果不想用groupby,也可以用defaultdict遍历DataFrame实现,适合习惯原生Python写法的场景:
from collections import defaultdict data_dict = defaultdict(list) # 遍历行,跳过索引列 for feature_id, tag_id in df.itertuples(index=False): data_dict[feature_id].append(tag_id) # 如果需要返回普通dict而非defaultdict对象,加一步转换即可 data_dict = dict(data_dict)
内容的提问来源于stack exchange,提问作者richdotcom
相关产品推荐
相关产品推荐

