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

Python Pandas读取API数据遇回车换行导致DataFrame错行问题求助

解决方案

方案1:读入CSV前预处理原始文本(更推荐)

直接在文本层面修正换行问题,避免读入时pandas自动处理异常行导致的数据丢失或类型错误:

import io
import pandas as pd
import requests

# 原请求逻辑,注意修正拼写错误:requesgs → requests
results = requests.get(url, auth=auth, headers=headers, data=data)
raw_text = results.content.decode("utf-8")

# 拆分所有行后逐行校验修正
lines = raw_text.splitlines()
fixed_lines = []
for line in lines:
    # 判断规则:正常行按空白拆分后至少有2个字段(对应col_1、col_2),不符合且已有有效行的判定为错行
    if len(line.strip().split(maxsplit=1)) < 2 and fixed_lines:
        # 错行内容拼接到上一行末尾
        fixed_lines[-1] = f"{fixed_lines[-1]} {line.strip()}"
    else:
        fixed_lines.append(line)

# 修正后的文本转DataFrame,多空格分隔用sep="\s+"匹配
fixed_text = "\n".join(fixed_lines)
rawData = pd.read_csv(io.StringIO(fixed_text), sep="\s+")

方案2:已读入DataFrame的情况

错行的特征为col_1为异常文本、col_2为空,可通过辅助列匹配修正:

import pandas as pd
import numpy as np

# 标记错行:col_1正常为整数,转数字失败的判定为错行
rawData["is_bad_row"] = pd.to_numeric(rawData["col_1"], errors="coerce").isna()
# 提取错行的内容
rawData["bad_content"] = np.where(rawData["is_bad_row"], rawData["col_1"], "")
# 错行内容上移一位,匹配到对应前一行
rawData["bad_content"] = rawData["bad_content"].shift(-1)
# 拼接col_2内容
rawData["col_2"] = rawData.apply(
    lambda x: f"{x['col_2']} + {x['bad_content']}" if x["bad_content"] else x["col_2"],
    axis=1
)
# 过滤错行、删除辅助列
rawData = rawData[~rawData["is_bad_row"]].drop(columns=["is_bad_row", "bad_content"]).reset_index(drop=True)

注意事项

  • 可根据实际业务的行格式调整错行判断规则,比如正常行col_1符合特定正则格式的,用正则匹配判断即可
  • 如果分隔符不是多空格,是制表符、逗号等,把判断逻辑和read_csv的sep参数改为对应分隔符即可

内容的提问来源于stack exchange,提问作者Chicken Sandwich No Pickles

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:15:02