本文介绍如何将形如 `{block: {text: {key: value}}}` 的三层嵌套字典,转化为具有多级列索引(block → text → key)的结构化pandas dataframe,并支持直观打印与后续分析。
在数据分

核心思路是:先转置原始 DataFrame 使 blocks 成为行索引,再对每个 text 字典单独标准化(json_normalize),最后横向拼接并构造多级列名。具体实现如下:
import pandas as pd
data = {
"block1": {
"text1": {"key1": "value1", "key2": "value2"},
"text2": {"key1": "value3", "key2": "value4"},
},
"block2": {
"text1": {"key1": "value5", "key2": "value6"},
"text2": {"key1": "value7", "key2": "value8"},
},
}
# Step 1: 构建初始 DataFrame(列=blocks,行=texts)
df = pd.DataFrame(data)
# Step 2: 转置 → 行=blocks,列=texts(此时每列为一个 dict)
df_t = df.T
# Step 3: 对每个 text 列应用 json_normalize,展开为扁平列(key1, key2),再水平拼接
normalized_parts = [pd.json_normalize(df_t[col]) for col in df_t.columns]
combined = pd.concat(normalized_parts, axis=1, keys=df_t.columns)
# Step 4: 设置行索引为 block 名(即原 df_t.index)
combined.index = df_t.index
# 最终结果
print(combined)输出效果:
text1 text2
key1 key2 key1 key2
block1 value1 value2 value3 value4
block2 value5 value6 value7 value8✅ 注意事项与优化建议:
该方法兼顾可读性与扩展性,是处理固定层级嵌套配置数据的标准实践。