将解码后的文本文件解码为pandas数据框

时间:2017-07-25 20:37:44

标签: python pandas dataframe python-requests

我使用requests获取制表符分隔数据文件,我想将其转换为pandas数据框。但是,我似乎无法弄清楚如何将解码数据文件转换为pandas数据帧对象。

import requests
import pandas as pd 
from datetime import date, timedelta


def build_url(site,yesterday):
    url = 'https://waterdata.usgs.gov/az/nwis/dv?cb_00060=on&format=rdb&site_no=' + gc + '&referred_module=sw&period=&begin_date=1989-01-01&end_date=' + yesterday 
    return url

yesterday = date.today() - timedelta(1)

yesterday=yesterday.strftime('%Y-%m-%d')

url = build_url(site,yesterday)
t = requests.get(url)
decoded = t.content.decode('utf-8')
tmp_df = pd.read_csv(decoded,sep='\t',encoding = 'utf8')

我的理解是decoded是一个生活在内存中的文本文件,但是当我使用指定的分隔符将其传递给pd.read_csv时,它开始打印出数据框并以以下结尾:

USGS    09402500    2017-07-19  15200   P
USGS    09402500    2017-07-20  15200   P
USGS    09402500    2017-07-21  15100   P
USGS    09402500    2017-07-22  15000   P
USGS    09402500    2017-07-23  14100   P
USGS    09402500    2017-07-24  13700   P
 does not exist

如何让pandas将decoded转换为数据框?

1 个答案:

答案 0 :(得分:1)

read_csv需要文件名或缓冲区。您可以将解码保存到文件,也可以使用StringIO对象:

import StringIO    
tmp_df = pd.read_csv(StringIO.StringIO(decoded), sep='\t')