提问人:prashanth manohar 提问时间:11/8/2023 最后编辑:prashanth manohar 更新时间:11/8/2023 访问量:65
对 Pandas DataFrame 的 CSV 响应
csv response to pandas dataframe
问:
我有这个代码:
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
答:
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 = “;”)。这样,您可以将文件加载到数据框中,然后对其进行操作以满足您的要求。
评论