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

如何为DataFrame添加包含其他列数据的JSON对象列?

问题:为DataFrame添加包含其他列信息的JSON列

初始DataFrame结构:

col_1col_2
11
22

尝试用以下代码添加JSON列:

for i, row in df:
    i_val = row.to_json()
    df.at[i,'raw_json'] = i_val

但得到了JSON嵌套重复的结果:

col_1col_2raw_json
11{"col_1":1,"col_2":1,"raw_json":{"col_1":1,"col_2":1}}
22{"col_1":2,"col_2":2,"raw_json":{"col_1":2,"col_2":2}}

期望的正确结果:

col_1col_2raw_json
11{"col_1":1,"col_2":1}
22{"col_1":2,"col_2":2}

解决方法

原因分析

循环中修改DataFrame时,后续迭代的row会包含刚添加的raw_json列,导致row.to_json()把新列也纳入序列化范围,形成嵌套。另外原循环写法有误,正确遍历行需用df.iterrows(),但即使修正写法,嵌套问题仍会存在。

正确代码示例

方法1:指定原始列生成JSON

直接选择需要转换的原始列,避免包含新添加的列:

df['raw_json'] = df[['col_1', 'col_2']].apply(lambda row: row.to_json(), axis=1)

方法2:基于原始副本生成JSON

先复制一份原始DataFrame,基于副本生成JSON后再添加到原DataFrame:

original_df = df.copy()
df['raw_json'] = original_df.apply(lambda row: row.to_json(), axis=1)

方法3:用字典转JSON(更灵活)

如果需要自定义JSON格式,可先转成字典再序列化:

import json
df['raw_json'] = df[['col_1', 'col_2']].apply(lambda row: json.dumps(row.to_dict()), axis=1)

以上方法均能避开循环修改DataFrame的问题,直接生成仅包含原始列信息的JSON字符串。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:22:18