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

如何拆分DataFrame中的字典列并保留与id列的关联

解决DataFrame字典列展开并保留id的问题

原DataFrame:

import pandas as pd

df = pd.DataFrame({
    'id': [1, 2],
    'text': [{'txt': 'en', 'longit': 0, 'latit': 0}, {'txt': 'fr', 'longit': 10, 'latit': 101, 'gross': 120.1}]
})

期望输出:

id     txt     longit    latit   gross
1       en       0         0      NaN
2       fr       10       101     120.1

你的代码问题分析:

你之前的代码将text列转成列表后生成新DataFrame,虽然能展开字典,但丢失了与原id列的对应关联,导致最终结果没有id列。

两种可行解决方案:

方案1:使用pd.json_normalize(推荐)

json_normalize专门用于解析JSON格式数据(包括字典列),直接结合原id列合并即可:

# 展开text列
expanded_text = pd.json_normalize(df['text'])
# 合并id列和展开后的列
result = pd.concat([df['id'], expanded_text], axis=1)
print(result)

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

对text列应用pd.Series将字典转成列,再与原id列关联:

# 展开text列并关联id
result = df['text'].apply(pd.Series).join(df['id'])
# 调整列顺序为预期的格式
result = result.reindex(columns=['id', 'txt', 'longit', 'latit', 'gross'])
print(result)

两种方法都能得到你想要的结果,其中pd.json_normalize处理复杂字典的效率更高,更适合大规模数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:50:22