如何将API返回的CSV文本数据转换为Pandas DataFrame
将API返回的CSV文本转换为Pandas DataFrame
你可以通过以下步骤把API返回的CSV文本直接转换成指定列名的Pandas DataFrame:
- 额外导入
pandas和io模块(io用于将字符串模拟为文件对象) - 用
io.StringIO包裹API返回的文本数据,让pandas可以像读取本地CSV文件一样读取它 - 读取数据后调整列名至你需要的格式
完整修改后的代码
import requests import json import pandas as pd import io url = "https://statdb.luke.fi:443/PxWeb/api/v1/en/LUKE/02 Maatalous/04 Tuotanto/06 Lihantuotanto/02 Kuukausitilastot/02_Lihantuotanto_teurastamoissa_kk.px" payload = json.dumps({ "query": [ { "code": "Muuttuja", "selection": { "filter": "item", "values": [ "Lihantuotanto" ] } }, { "code": "Laji", "selection": { "filter": "item", "values": [ "Lehmät" ] } } ], "response": { "format": "csv" } }) headers = { 'Content-Type': 'application/json', 'Cookie': 'rxid=710a361a-7044-494f-95b7-15261822712c' } response = requests.request("POST", url, headers=headers, data=payload) # 将CSV文本转换为DataFrame csv_data = io.StringIO(response.text) # 读取CSV,若返回的CSV存在多行表头或格式异常,可添加header参数调整(如header=1) df = pd.read_csv(csv_data) # 重命名列至目标格式 df.columns = ["Month", "Variable", "Cows 7) 8)"] # 查看转换后的DataFrame print(df.head())
关键步骤说明
io.StringIO(response.text):把API返回的字符串转换成pandas可读取的类文件对象,省去写入本地文件再读取的步骤pd.read_csv(csv_data):直接读取类文件对象中的CSV数据,若原CSV表头格式特殊,可通过header参数指定读取起始行df.columns = [...]:强制将列名设置为你需要的格式,确保最终DataFrame符合需求
内容的提问来源于stack exchange,提问作者prashanth manohar
相关产品推荐
相关产品推荐

