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

如何将Pandas DataFrame中字典的值提取为新列?

提取Pandas DataFrame中字典列的键值作为新列

方法1:使用pd.json_normalize(推荐,大数据量更高效)

针对你的场景,字典值是单元素列表,需先提取列表内的标量,再与原DataFrame合并:

import pandas as pd

# 初始DataFrame
df = pd.DataFrame({'a': [1, 2, 3], 'b': [{'x':[101], 'y': [102], 'z': [103]}, {'x':[201], 'y': [202], 'z': [203]}, {'x':[301], 'y': [302], 'z': [303]}]})

# 解析字典列,提取列表中的标量值
dict_df = pd.json_normalize(df['b']).apply(lambda col: col.str[0])

# 合并原列与新生成的列
df_result = pd.concat([df['a'], dict_df], axis=1)

print(df_result)

输出结果:

a    x    y    z
0  1  101  102  103
1  2  201  202  203
2  3  301  302  303

方法2:使用apply(pd.Series)

数据量不大时,可直接将字典转成Series再处理:

# 把字典列转为DataFrame,提取列表内的标量
dict_df = df['b'].apply(pd.Series).apply(lambda col: col.str[0])

# 合并得到结果
df_result = pd.concat([df['a'], dict_df], axis=1)

补充说明

你之前用apply得到的是嵌套列表,核心问题是没把字典直接拆分成列。上面两种方法直接将字典的键映射为列名、值映射为对应行内容,再处理列表转标量的问题,完全匹配你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 15:17:08