对 Pandas DataFrame 的 CSV 响应

csv response to pandas dataframe

提问人:prashanth manohar 提问时间:11/8/2023 最后编辑:prashanth manohar 更新时间:11/8/2023 访问量:65

问:

我有这个代码:

import requests
import json

import pandas as pd
import io

response = requests.request("GET", url, headers=headers, data=payload)

它返回一个响应:

print(response.text)
GENESIS-Tabelle: 45213-0005
Turnover from accommodation and food services: Germany,;;;;;;;;;;;;;
months, price types, original and adjusted data, economic;;;;;;;;;;;;;
activities;;;;;;;;;;;;;
Monthly statistics: accommodation a. food services;;;;;;;;;;;;;
Germany;;;;;;;;;;;;;
Turnover (2015=100);;;;;;;;;;;;;
;;Year;;;;;;;;;;;
;;2023;;;;;;;;;;;
;;Months;;;;;;;;;;;
;;January;February;March;April;May;June;July;August;September;October;November;December
WZ08-55 Accommodation;;;;;;;;;;;;;
at constant prices;BV4.1 trend;100.1;100.0;98.3;95.9;93.4;90.7;88.4;86.7;...;...;...;...
WZ08-551 Hotels and similar accommodation;;;;;;;;;;;;;
at constant prices;BV4.1 trend;100.6;100.5;98.8;96.4;93.9;91.2;88.9;87.3;...;...;...;...

我可以将其写入csv文件。但无法将其加载到 pandas 中。可以做哪些更改来使其正常工作?

df = pd.read_csv(io.StringIO(response.text))

ParserError:标记数据时出错。C 错误:行中应有 2 个字段 3、锯 4

python pandas python-requests read.csv

评论

0赞 tripleee 11/8/2023
第一行中没有任何 CSV。

答:

1赞 Shubham Bansal 11/8/2023 #1

response.text 中的数据格式不能解析为 csv 文件。它的结构由多个分隔符和不规则换行符组成。数据似乎用分号分隔,有些行的字段比其他行多。

你将不得不做

df = pd.read_csv(io.StringIO(response.text), sep=';')

它应该可以工作,但是一旦这与上述语句一起使用,您可能必须进行一些更改,因为正如我提到的,您的数据结构不正确。

0赞 uSer 11/8/2023 #2

panda.read_csv使用 “,” 作为默认分隔符,因此它将相对于 “,” 拆分每一行。现在,您可以看到行之间的逗号数量不同,这使得解析器无法正确读取/拆分文件(分列),从而出现错误。一种方法是使用不同的分隔符(这里,可能是 sep = “;”)。这样,您可以将文件加载到数据框中,然后对其进行操作以满足您的要求。