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

如何将同键多值字典转换为指定结构的Pandas DataFrame

解决方案:合并多字典为指定结构DataFrame

问题背景

你有多个键完全相同的字典,分别存储职位的职责、示例头衔、主要工作内容等信息,需要将它们合并成以职位为行、各字典值为列的DataFrame,目标结构如下:

Job PositionJob RoleExample TitlesMain Duties
00010 – Legislators['Legislators participate in...']['Cabinet minister', 'City councillor', ...]['Enact, amend or repeal laws and regulations', ...]
00011 – Senior government managers and officials['Senior government managers...']['Assistant deputy minister', ...]['Establish objectives for the organization...']

原代码问题

你之前的from_records用法错误,因为from_records需要的是记录列表(每个元素是一行数据),而你传入的是多个字典(每个字典是一列数据),所以无法得到预期结构。

正确实现代码

基础版(直接合并)

import pandas as pd

# 假设你的字典变量名分别为:dict_job_role(职位职责)、dict_example_titles(示例头衔)、dict_main_duties(主要工作内容)
# 先将每个字典转为Series,索引为职位名称
s_role = pd.Series(dict_job_role, name='Job Role')
s_titles = pd.Series(dict_example_titles, name='Example Titles')
s_duties = pd.Series(dict_main_duties, name='Main Duties')
# 如果还有其他字典(employment_requirements等),同理转为Series

# 按列合并所有Series
df = pd.concat([s_role, s_titles, s_duties], axis=1)
# 将索引转为单独的Job Position列
df.reset_index(inplace=True)
df.rename(columns={'index': 'Job Position'}, inplace=True)

print(df)

优化版(清理冗余换行/空元素)

原字典中的示例头衔和主要工作内容包含大量空字符串和换行,可提前过滤:

import pandas as pd

# 定义清理函数:过滤列表中的空字符串和纯换行元素
def clean_list(lst):
    return [item.strip() for item in lst if item.strip()]

# 清理每个字典的值
cleaned_role = {k: v for k, v in dict_job_role.items()}  # 职责列表无需清理
cleaned_titles = {k: clean_list(v) for k, v in dict_example_titles.items()}
cleaned_duties = {k: clean_list(v) for k, v in dict_main_duties.items()}

# 转为Series并合并
s_role = pd.Series(cleaned_role, name='Job Role')
s_titles = pd.Series(cleaned_titles, name='Example Titles')
s_duties = pd.Series(cleaned_duties, name='Main Duties')

df = pd.concat([s_role, s_titles, s_duties], axis=1).reset_index().rename(columns={'index': 'Job Position'})

print(df)

代码说明

  1. 字典转Series:每个字典的键会自动成为Series的索引(即职位名称),值对应列的内容,同时给Series指定列名方便后续合并。
  2. concat合并:axis=1表示按列合并,确保相同职位的信息对齐。
  3. 重置索引:把原来的职位索引转为单独的Job Position列,符合目标表格结构。
  4. 清理数据:clean_list函数过滤掉列表中的空字符串和纯换行,让最终表格的数据更整洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:17:35