2016-11-08 1 views
0

Ich bekomme einen Fehler und ich bin mir nicht sicher, wie ich es beheben soll. Hier ist mein Code:ValueError: Form der übergebenen Werte ist (6, 251), Indizes implizieren (6, 1)

from matplotlib.finance import quotes_historical_yahoo_ochl 
from datetime import date 
from datetime import datetime 
import pandas as pd 

today = date.today() 
start = (today.year-1, today.month, today.day) 
quotes = quotes_historical_yahoo_ochl('AXP', start, today) 
fields = ['date', 'open', 'close', 'high', 'low', 'volume'] 
list1 = [] 
for i in range(len(quotes)): 
    x = date.fromordinal(int(quotes[i][0])) 
    y = datetime.strftime(x, '%Y-%m-%d') 
list1.append(y) 
quotesdf = pd.DataFrame(quotes, index = list1, columns = fields) 
quotesdf = quotesdf.drop(['date'], axis = 1) 
print quotesdf 

enter image description here

Wie kann ich den Code ändern, mein Ziel zu erreichen, die Dateform ändern und das Original löschen?

+0

'quotesdf = quotesdf.drop (['date'], axis = 1' scheint unnötig zu sein. Nicht' quotesdf.drop (['date'], axis = 1' speichern das Ergebnis bereits in 'quotesdf'? Und bitte füge weitere Tags zu dieser Frage hinzu, da es nicht nur ein Python 2.7 Sprachproblem ist. – Aemyl

Antwort

1

Grundsätzlich sollten Sie den Code arbeiten, Sie müssen es nur richtig einrücken, das heißt, müssen Sie den Wert von y-list1innerhalb der for-Schleife anzuhängen.

for i in range(len(quotes)): 
    x = date.fromordinal(int(quotes[i][0])) 
    y = datetime.strftime(x, '%Y-%m-%d') 
    list1.append(y) 

Dadurch list1 werden so viele Einträge wie quotes statt nur eine (die letzte) haben. Und der finale Datenrahmen wird sich nicht über missgebildete Daten beschweren.

+0

Danke, ich habe diesen Fehler auch letzte Nacht gefunden. –

Verwandte Themen