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

如何拆分DataFrame列中的嵌套字典并生成新行?

解决DataFrame嵌套字典列提取值的问题

你遇到的情况很常见——想把Col3列里嵌套字典的link值提取出来替换原列,但df.apply(pd.Series)没达到预期,这是因为这个方法是把字典拆分成多列,而不是提取单个值替换原列。下面给你几个简单有效的解决方案:

方法1:用str.get()快速提取(推荐)

如果你的Col3列里每个元素都是包含link键的字典,直接用Series的str.get()方法就能一键提取值:

import pandas as pd

# 构造原始DataFrame
data = {
    'Col1': ['01', '02'],
    'Col2': ['ABC', 'DEF'],
    'Col3': [{'link':'http://smthing1'}, {'link':'http://smthing2'}]
}
df = pd.DataFrame(data)

# 提取link值替换Col3
df['Col3'] = df['Col3'].str.get('link')
print(df)

输出结果:

Col1 Col2               Col3
0   01  ABC  http://smthing1
1   02  DEF  http://smthing2

方法2:用apply()自定义提取逻辑

如果需要更灵活的处理(比如部分字典可能没有link键,想设置默认值),可以用apply()结合lambda函数:

# 提取link值,没有则返回None
df['Col3'] = df['Col3'].apply(lambda x: x.get('link', None))

这个方法的好处是可以处理异常情况,比如遇到空字典或者缺少link键的元素时,不会报错,而是返回你指定的默认值(比如None或者空字符串)。

为什么df.apply(pd.Series)不行?

补充解释下:df.apply(pd.Series)会把每个字典的键作为新列名,值作为对应列的内容,执行后你会得到一个新增link列的DataFrame,而不是替换原Col3列,这和你的需求不符,所以才没达到预期效果。

内容的提问来源于stack exchange,提问作者Shabari nath k

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 10:12:29