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
相关产品推荐
相关产品推荐

