2017-09-06 4 views
0

Ich schrieb eine einfache Funktion, um eine Zeichenfolge zu teilen.zu viele Werte zum Entpacken in Funktion anwenden (Python 2)

def split2(target): 
    (key, host) = target.split('_') 
    return (key, host) 

(combined['host'], combined['timestamp']) = combined['key'].apply(split2) 

combined['key'] eine Pandas Serie ist, die 'ibmserver_4/12/2007'

nach dem Versuch, mehrere Male wie der String machen, habe ich immer noch die Valueerror: zu viele Werte zu entpacken. Wenn ich den Return-Parameter in der Split2-Funktion auf eins reduziere, funktioniert das gut.

Kann jemand raten, was mit dem obigen Code falsch ist und wie soll ich korrigieren? Danke vielmals.

Antwort

0

Eine einfachere Möglichkeit wäre, die str direkt mit Pandas zu spalten, indem expand=True separate Spalten erzeugt, zum Beispiel:

>>> combined['key'].str.split('_', expand=True) 
      0   1 
0 ibmserver 4/12/2007 

Der richtige Weg, um mehrere Spalten zuzuordnen ist:

>>> combined[['host', 'timestamp']] = combined['key'].str.split('_', expand=True) 
>>> combined 
        key  host timestamp 
0 ibmserver_4/12/2007 ibmserver 4/12/2007 

Um Ihre Funktion funktionsfähig zu machen, müssten Sie das zurückgegebene Tupel in eine Reihe konvertieren, z. B .:

>>> combined[['host', 'timestamp']] = combined['key'].apply(split2).apply(pd.Series) 
+0

große Antwort, lerne ich viel – user8566377

Verwandte Themen