如何将多字典数组转换为指定格式的Pandas DataFrame?
解决方案
你的原始数据是包含多组键值映射的字典列表,直接转成DataFrame会导致每个字典占一行、缺失键填充NaN,这也是dropna()和head()达不到预期的原因。要实现每行显示一个键值对的格式,需要先拆分每个字典的键值对,再重组为DataFrame。
代码实现
带分组标识(区分不同字典的来源)
如果需要明确每个键值对属于哪一组(比如第一组是工作类型、第二组是婚姻状态),可以添加分组列:
import pandas as pd # 你的原始数据 data = [{'Federal-gov': 0, 'Local-gov': 1, 'Never-worked': 2}, {'Divorced': 0, 'Married-AF-spouse': 1, 'Married-civ-spouse': 2, 'Married-spouse-absent': 3, 'Never-married': 4, 'Separated': 5, 'Widowed': 6}] rows = [] # 遍历每个字典,拆分键值对并添加分组标识 group_names = ["工作类型", "婚姻状态"] # 自定义分组名称,更直观 for group, d in zip(group_names, data): for category, code in d.items(): rows.append({"分组": group, "类别": category, "编码": code}) # 生成最终DataFrame result_df = pd.DataFrame(rows) print(result_df)
不带分组标识
如果不需要区分来源,直接提取所有键值对即可:
import pandas as pd data = [{'Federal-gov': 0, 'Local-gov': 1, 'Never-worked': 2}, {'Divorced': 0, 'Married-AF-spouse': 1, 'Married-civ-spouse': 2, 'Married-spouse-absent': 3, 'Never-married': 4, 'Separated': 5, 'Widowed': 6}] rows = [] for d in data: for category, code in d.items(): rows.append({"类别": category, "编码": code}) result_df = pd.DataFrame(rows) print(result_df)
输出示例(带分组)
分组 类别 编码 0 工作类型 Federal-gov 0 1 工作类型 Local-gov 1 2 工作类型 Never-worked 2 3 婚姻状态 Divorced 0 4 婚姻状态 Married-AF-spouse 1 5 婚姻状态 Married-civ-spouse 2 6 婚姻状态 Married-spouse-absent 3 7 婚姻状态 Never-married 4 8 婚姻状态 Separated 5 9 婚姻状态 Widowed 6
内容的提问来源于stack exchange,提问作者user8672267
相关产品推荐
相关产品推荐

