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

如何将Pandas DataFrame的行转为JSON字符串并遍历处理?

解决Pandas DataFrame转JSON后无法遍历单行数据的问题

你的问题出在对to_json(orient='records')返回结果的格式理解上:当你用这个参数时,得到的是一个紧凑的JSON数组字符串(比如[{"A":0.123,"B":-0.456,...}, {...}, ...]),整个字符串里没有换行符,所以用split('\n')拆分自然得不到独立的单行JSON对象,反而会把整个数组当成一个元素,后续json.loads还会报错。

下面给你两种可行的解决方案:

方案1:直接解析整个JSON数组(推荐)

既然返回的是JSON数组,我们可以直接用json.loads把整个字符串转成Python列表,然后遍历列表里的每个字典即可,这是最高效的方式:

import json
import pandas as pd
import numpy as np

# 生成测试DataFrame
df = pd.DataFrame(np.random.randn(50, 4), columns=list('ABCD'))
# 转为JSON数组字符串
df_as_json = df.to_json(orient='records')

# 解析整个数组为Python列表
records_list = json.loads(df_as_json)

# 遍历每个数据行对应的字典
for jdict in records_list:
    # 这里写你的处理逻辑,比如打印当前行的A列值
    print(f"当前行A列值:{jdict['A']}")

方案2:生成每行一个JSON的格式(适合需要逐行存储/传输的场景)

如果你确实需要得到每行一个独立JSON对象的字符串,可以在调用to_json时加上lines=True参数,这样输出的字符串会每行对应一个JSON对象,此时用split('\n')拆分就有效了(注意要过滤可能存在的空行):

import json
import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(50, 4), columns=list('ABCD'))
# 生成每行一个JSON的字符串
df_as_json_lines = df.to_json(orient='records', lines=True)

# 拆分并遍历
for json_document in df_as_json_lines.split('\n'):
    # 跳过最后可能的空行
    if json_document.strip():
        jdict = json.loads(json_document)
        # 处理逻辑示例
        print(f"当前行B列值:{jdict['B']}")

简单总结下:

  • 不需要单行JSON字符串的话,直接解析整个数组是最优选择
  • 必须要单行格式时,用lines=True参数生成对应格式再拆分

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:32:41