如何将含缺失列与空值的JSON转换为Pandas DataFrame?
处理含缺失列的JSON数据生成Pandas DataFrame
问题场景
给定如下结构的JSON数据:
f = {'results': [{'tables': [{'rows': [{'column1': 'dog', 'column2': 'blue', 'column3': 'sad'}, { 'column2': 'red', 'column3': 'happy'}, {'column1': 'bird', 'column2': 'green'}] }]}]}
需要将其转换为自动补全缺失列的Pandas DataFrame,最终输出格式如下:
column1 column2 column3 dog blue sad red happy bird green
可行方案
Pandas原生支持处理这种含缺失键的字典列表,直接提取目标数据后传入DataFrame构造函数即可自动补全缺失列,步骤如下:
完整代码示例
import pandas as pd # 目标JSON数据 f = {'results': [{'tables': [{'rows': [{'column1': 'dog', 'column2': 'blue', 'column3': 'sad'}, { 'column2': 'red', 'column3': 'happy'}, {'column1': 'bird', 'column2': 'green'}] }]}]} # 从嵌套结构中提取rows数据 rows = f['results'][0]['tables'][0]['rows'] # 生成DataFrame,自动补全缺失列 df = pd.DataFrame(rows) # 可选:将NaN替换为空白字符串,让显示更符合预期 df = df.fillna('') # 打印无索引的结果 print(df.to_string(index=False))
关键说明
pd.DataFrame(rows)会自动扫描所有字典的键,生成包含所有出现过列名的DataFrame,缺失对应列的行会填充NaN。- 使用
fillna('')可以将默认的NaN替换为空白,和期望的显示格式一致。 to_string(index=False)用于隐藏默认的行索引,输出更贴合需求格式。
内容的提问来源于stack exchange,提问作者dmd7
相关产品推荐
相关产品推荐

