如何将requests获取的制表符分隔文本转为格式化pandas DataFrame
将字节型制表符分隔文本转换为规范的Pandas DataFrame
你已经通过requests获取到了字节格式的制表符分隔数据,接下来可以通过以下步骤将其转换为格式规范的Pandas DataFrame:
步骤1:解码字节内容为字符串
首先把返回的bytes类型数据解码成UTF-8编码的字符串,这是后续处理的基础:
import requests import pandas as pd import csv from io import StringIO test_URL = "https://www.bis.doc.gov/dpl/dpl.txt" def get_data(link): hdr = {'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Mobile Safari/537.36'} req = requests.get(link, headers=hdr) # 解码字节内容为字符串 content = req.content.decode('utf-8') return content data_str = get_data(test_URL)
步骤2:用Pandas读取并解析文本
由于数据是制表符分隔且每个字段都用双引号包裹,直接使用pd.read_csv并指定合适的参数即可正确解析:
df = pd.read_csv( StringIO(data_str), sep='\t', # 指定分隔符为制表符 quoting=csv.QUOTE_ALL, # 识别所有用双引号包裹的字段 skipinitialspace=True, # 去掉字段开头的多余空格(比如示例中" I. ASH"的前置空格) parse_dates=['Effective_Date', 'Expiration_Date', 'Last_Update'] # 自动解析日期列 )
步骤3:验证结果
执行完上述代码后,你可以通过以下命令查看DataFrame的结构和前几行数据,确认格式是否规范:
# 查看数据结构 print(df.info()) # 查看前5行数据 print(df.head())
关键参数说明
sep='\t': 明确告诉Pandas数据是制表符分隔,避免默认逗号分隔导致的解析错误quoting=csv.QUOTE_ALL: 确保带双引号的字段(即使包含逗号或空格)能被正确识别为单个字段skipinitialspace=True: 消除字段值开头的多余空格,让数据更整洁parse_dates: 自动将日期字符串转换为Pandas的datetime类型,方便后续时间相关分析
内容的提问来源于stack exchange,提问作者Giampaolo Levorato
相关产品推荐
相关产品推荐

