2017-07-25 3 views
0

Ich erhalte eine Tab getrennt Datei mit requests und ich möchte es zu einem Pandas Datenrahmen konvertieren. Ich kann jedoch nicht herausfinden, wie die dekodierte Datendatei in ein Pandas-Datenrahmenobjekt konvertiert werden kann.Dekodierte Textdatei zu Pandas Datenrahmen

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') 

Mein Verständnis ist, dass decoded eine Textdatei im Speicher lebt, aber wenn ich übergebe es an pd.read_csv mit dem angegebenen Begrenzer es aus dem Datenrahmen zu drucken beginnt und endet mit:

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 

Wie kann ich Pandas dazu bringen, decoded in einen Datenrahmen zu konvertieren?

+1

'decoded' ist keine Datei. Es ist eine Zeichenkette mit dem Inhalt von der Webseite. 'pd.read_csv' erwartet einen Dateinamen als erstes Argument. – DyZ

Antwort

1

read_csv möchte einen Dateinamen oder einen Puffer. Sie können entweder in eine Datei entschlüsselt speichern, oder verwenden Sie ein StringIO Objekt:

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

Danke! Ich war Sekunden davon entfernt, diese Lösung zu posten. – dubbbdan

Verwandte Themen