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

如何将API返回的CSV格式字符串转换为Dataframe(PySpark/Python)

API返回CSV字符串转DataFrame失败的解决方法

核心问题分析

你拿到的API返回CSV字符串存在连续空列(多个逗号连续)和表头与数据在同一行混合的格式问题,这是导致直接转换失败的主要原因。以下是针对性的解决方法:

解决方法

1. 准备依赖库

确保已安装pandas,然后导入所需模块:

import requests
import pandas as pd
from io import StringIO

2. 方案一:自动读取并修复格式

利用pandas.read_csv的参数处理格式问题,将字符串转为文件对象后直接读取:

url = "test"
headers = {
    "accept": "text/csv",
    "authorization": "Bearer test"
}

response = requests.get(url, headers=headers, timeout=60)

# 将响应字符串转为可被pandas读取的文件流
csv_stream = StringIO(response.text)

# 读取CSV,忽略逗号后的空格,自动处理空列
df = pd.read_csv(csv_stream, sep=',', skipinitialspace=True)

# 可选:删除全为空值的列
df = df.dropna(axis=1, how='all')

print(df)

3. 方案二:手动拆分表头与数据

如果API返回的表头和数据完全混在同一行,可手动拆分字段:

# 拆分所有字段
all_fields = response.text.split(',')

# 提取表头:从开头到"Original URL"(共15个字段)
header = all_fields[:15]
# 提取对应的数据行
data_row = all_fields[15:]

# 创建DataFrame
df = pd.DataFrame([data_row], columns=header)

# 清理空值列
df = df.dropna(axis=1, how='all')

print(df)

排查要点

如果仍无法转换,检查以下内容:

  • 打印response.text确认完整返回内容,看是否有换行符、特殊字符破坏CSV格式
  • 确认API返回的text/csv格式是否符合标准,部分API可能返回非标准CSV
  • 若存在编码问题,添加response.encoding = 'utf-8'指定编码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 19:22:44