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

如何对DataFrame中每行字典排序后透视生成对应表头列?

实现代码

你可以直接用pandas内置的json_normalize方法完成字典列的展开,再对列名排序即可,完整示例如下:

import pandas as pd
import numpy as np

# 此处替换为你自己的原始DataFrame,存字典的列假设名为dict_col
df = pd.DataFrame({
    'dict_col': [
        {'key_b': 40, 'key_d': 1, 'key_e': 15, 'key_h': 11, 'key_f': 15, 'key_a': 273, 'key_c': 9},
        {'key_c': 10, 'key_a': 286, 'key_b': 42},
        {'key_f': 1},
        {'key_g': 'trial', 'key_i': 1},
        {'key_d': 1, 'key_e': 3, 'key_h': 2, 'key_i': 1, 'key_c': 11, 'key_b': 47, 'key_a': 325, 'key_g': 'premium'},
        {'key_g': 'trial'}
    ]
})

# 展开字典列为独立列,不存在的键自动填充NaN
result = pd.json_normalize(df['dict_col'])
# 对所有列名按字典序排序,满足键排序需求
result = result.reindex(sorted(result.columns), axis=1)
# 可选:将NaN替换为字符串'null',符合你示例中的输出格式
result = result.replace(np.nan, 'null')

输出效果

执行后result的内容和你要求的完全一致:

key_akey_bkey_ckey_dkey_ekey_fkey_gkey_hkey_i
27340911515null11null
2864210nullnullnullnullnullnull
nullnullnullnullnull1nullnullnull
nullnullnullnullnullnulltrialnull1
325471113nullpremium21
nullnullnullnullnullnulltrialnullnull

补充说明

如果需要保留原始DataFrame中除字典列外的其他字段,可以用concat方法合并:

result = pd.concat([df.drop('dict_col', axis=1), result], axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:54:02