2017-02-07 4 views
-1

In Python zu entpacken, wenn ich diesen Code ausführen:pd.read_csv, Valueerror: Notwendigkeit, mehr als 1 Wert

def parse_japanese_date(s): 
    base_years={'S':1925,'H':1988} 
    era=s[0] 
    year,month,day=s[1:].split('.') 
    year=base_years[era]+int(year) 
    return datetime(year,int(month),int(day)) 

df_jgbcm=pd.read_csv('jgbcm_all.csv',encoding='cp932',index_col=0,parse_dates=True, date_parser=parse_japanese_date,na_values=['-']) 

ich diesen Fehler:

ValueError: need more than 1 value to unpack 

Was bedeutet, dass Fehler entdeckt? Was soll ich tun, um dies zu ändern?

+1

Fügen Sie die vollständige Fehlerverfolgung hinzu. Kann dies sein: 'Jahr, Monat, Tag = s [1:]. Split ('.')'. Versuchen Sie, 's [1:] .split ('.')' Zu drucken und sehen Sie, ob die Liste 3 Werte hat. Vielleicht erstellen Sie eine [mcve], um bessere Lösungen zu erhalten. – MYGz

+0

könnten Sie einige Beispieldaten posten, wie Sie es tun, kann wahrscheinlich effizienter durchgeführt werden – EdChum

Antwort

0

Was ist die vollständige Traceback? Ich glaube nicht, dies ein Fehler ist zu Pandas im Zusammenhang, sondern ein Fehler auf diese Zeile in Ihrer Funktion beziehen:

year,month,day=s[1:].split('.') 

Mehr als wahrscheinlich, Ihre CSV-Datei wird Ihnen genügend Informationen nicht geben year,month,day Werte zuweisen und dieser Fehler spiegelt dies wider.

0

Auspacken ist, wo Sie einige Komma getrennte Variablennamen auf der linken Seite und einige interable auf der rechten Seite wie eine Liste oder Tupel trennt dann die Werte in diesem iterable in die Komma getrennte Variablen, die Sie festlegen.

year,month,day=s[1:].split('.') 

Ich stelle mir vor, das ist die Linie, die den Fehler wirft. Es kann sein, dass es mehr oder weniger Werte im iterablen als die Anzahl der Variablen gibt, die Sie festgelegt haben. Daher müssen Sie möglicherweise einen hinzufügen oder entfernen. Wenn Sie einen hinzufügen müssen Es ist üblich, einen Unterstrich für Variablen verwenden Sie Auspacken aber kümmern sich nicht um zB

year,month,day,_=s[1:].split('.') 

denke ich, Ihre Fehler

ValueError: need more than 1 value to unpack 

sagt, dass die Variable, die Sie Splitting sind gibt weniger Daten zurück, als Sie benötigen. Sie sollten also überprüfen, was es enthält, bevor Sie es entpacken, indem Sie den Inhalt davon drucken oder debuggen

Verwandte Themen