Ich habe einen Pandas Datenrahmen und eine der Spalten ist eine Zeichenfolge. Ich habe eine Funktion von einem externen Modul importiert, um einige RegEx-Prüfungen durchzuführen und diese Zeichenfolge auf eine kurze Klassifizierung zu reduzieren.Pandas DataFrame Übernehmen Funktion, mehrere Argumente
Dies funktioniert:
df['PageCLass'] = df['PageClass'].apply(lambda x: PageClassify.page_classify(x))
Doch was würde ich wirklich tun möchte, ist eine weitere Spalte ‚Rev‘ in der Datenrahmen enthalten, die einen Schwimmer oder NaN in der Prüfung sein geschieht entweder.
Als ich dies tat:
df['PageCLass'] = df['PageClass'].apply(lambda x: PageClassify.page_classify(x,df['Rev']))
und ich tat logische Kontrollen innerhalb der Klassifizierungsfunktion auf dem zweiten Argument, ich diesen Fehler habe:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Was ich suche ist ein Möglichkeit, den zweiten Argumentwert nach Wert zu erfassen, genauso wie Lambda x: den ersten Argumentwert nach Wert erfasst.
Ich habe die Methode page_classify so geändert, dass sie zwei Argumente enthält (statt wie oben ein Argument auf der Registerkarte \ t aufzuteilen und das Hauptprogramm mit der Zeile zu ändern): TypeError: ('page_classify() benötigt genau 2 Argumente (120467 gegeben) ', trat bei index PageClass') auf –
Ich habe axis = 1 hinzugefügt und Dinge liefen, aber seltsamerweise meine Zielspalte df ['PageClass'] nicht aktualisiert, dh der zurückgegebene Wert aus der Funktion wurde nicht zugeordnet Es scheint, dass es unverändert ist. –
Guter Ruf, gerade als du dies kommentiert hast, habe ich es ausprobiert und sicher genug, dass df ['blargh'] den zurückgegebenen Wert erhält! Ich frage mich, warum es nicht so war zuweisen "an Ort und Stelle." –