You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Pandas DataFrame转换为指定格式的字典?

解决方案:将DataFrame转换为指定嵌套字典格式

这里有个可行的方案来实现你想要的结果,咱们一步步拆解实现逻辑:

步骤1:拆分标签并展开行

首先需要把每个tags_string里的逗号分隔标签拆成单独的条目,这样才能统计每个标签的出现次数。我们可以用assign创建新的标签列表列,再用explode把列表展开成多行:

df_exploded = df.assign(tags=df['tags_string'].str.split(',')).explode('tags')

这一步之后,df_exploded的结构会变成:

site_category tags_string tags
0            26  aaa,bbb,ccc  aaa
0            26  aaa,bbb,ccc  bbb
0            26  aaa,bbb,ccc  ccc
1            43  ddd,eee,fff  ddd
1            43  ddd,eee,fff  eee
1            43  ddd,eee,fff  fff
2            26  aaa,hhh,iii  aaa
2            26  aaa,hhh,iii  hhh
2            26  aaa,hhh,iii  iii

步骤2:分组统计标签次数

接下来按site_category和tags分组,统计每个标签在对应分类下的出现次数,再转换成字典格式:

tag_counts = df_exploded.groupby(['site_category', 'tags']).size().unstack(fill_value=0).to_dict('index')

这一步会得到一个以分类为键,标签计数字典为值的字典:

{'26': {'aaa': 2, 'bbb': 1, 'ccc': 1, 'hhh': 1, 'iii': 1}, '43': {'ddd': 1, 'eee': 1, 'fff': 1}}

步骤3:转换为目标嵌套格式

最后把上面的结果转换成你需要的「列表包含大字典,每个分类对应一个包含计数字典的列表」格式:

tags_string_list = [dict(item for sublist in [{k: [v]} for k, v in tag_counts.items()] for item in sublist.items())]

完整代码

把所有步骤整合起来,完整代码如下:

import pandas as pd

# 原始数据
data = {'articles': [{'site_category': '26','tags_string': 'aaa,bbb,ccc'}, {'site_category': '43','tags_string': 'ddd,eee,fff'}, {'site_category': '26','tags_string': 'aaa,hhh,iii'}]}
df = pd.json_normalize(data, 'articles')

# 拆分标签并展开
df_exploded = df.assign(tags=df['tags_string'].str.split(',')).explode('tags')

# 分组统计标签次数
tag_counts = df_exploded.groupby(['site_category', 'tags']).size().unstack(fill_value=0).to_dict('index')

# 转换为目标格式
tags_string_list = [dict(item for sublist in [{k: [v]} for k, v in tag_counts.items()] for item in sublist.items())]

print(tags_string_list)

运行后输出结果:

[{"26": [{"aaa": 2, "bbb": 1, "ccc": 1, "hhh": 1, "iii": 1}], "43": [{"ddd": 1, "eee": 1, "fff": 1}]}]

内容的提问来源于stack exchange,提问作者tientoen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 18:59:07