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

Pandas如何将DataFrame每行所有列转为JSON并新增为列

实现方案

直接用pandas内置的JSON序列化方法就行,不用自己写循环拼字符串,不会出格式错,效率也高。
核心逻辑是调用to_json时指定按行生成记录,直接拆分后赋值给新列,完整代码如下:

import pandas as pd                                                                         
technologies = [                                                                            
            ("Spark", 22000,'30days',1000.0),                                               
            ("PySpark",25000,'50days',2300.0),                                              
            ("Hadoop",23000,'55days',1500.0)                                                
            ]                                                                               
df = pd.DataFrame(technologies,columns = ['Courses','Fee','Duration','Discount'])

# 新增json列的核心代码
df['json'] = df.to_json(orient='records', lines=True).splitlines()

print(df)

参数说明

  • orient='records':指定序列化结构为「每行对应一个键值对JSON对象」,和你要的字段结构完全匹配
  • lines=True:输出时按行拆分JSON对象,不包裹成全局数组,后续直接用splitlines()就能切出和原表逐行对应的字符串,顺序完全对齐
  • 这个方法会自动识别字段类型:字符串自动加双引号、数值类字段保持数字格式,不会出现多余转义、格式错位的问题,后续你给原表加新列,生成的JSON也会自动包含新字段,不用改逻辑。

运行后输出和你预期完全一致:

Courses    Fee Duration  Discount                                               json
0    Spark  22000   30days    1000.0   {"Courses":"Spark","Fee":22000,"Duration":"30days","Discount":1000.0}
1  PySpark  25000   50days    2300.0  {"Courses":"PySpark","Fee":25000,"Duration":"50days","Discount":2300.0}
2   Hadoop  23000   55days    1500.0   {"Courses":"Hadoop","Fee":23000,"Duration":"55days","Discount":1500.0}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 12:31:01