2017-07-25 58 views
0

我得到一個製表符分隔的數據文件使用requests我想將其轉換爲熊貓數據幀。但是,我似乎無法弄清楚如何將解碼的數據文件轉換爲熊貓數據框對象。解碼文本文件到熊貓數據幀

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 

我怎樣才能讓熊貓將decoded轉換成數據框?

+1

'decode'不是文件。它是一個包含網頁內容的字符串。 'pd.read_csv'需要一個文件名作爲第一個參數。 – DyZ

回答

1

read_csv想要一個文件名或緩衝區。您可以將解碼保存到文件,也可以使用StringIO對象:

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

謝謝!我離開發布該解決方案几秒鐘。 – dubbbdan