In Pandas kann es vorkommen, dass Sie mehrere neue Spalten basierend auf einer benutzerdefinierten Funktion erstellen müssen, die auf eine Funktion angewendet wird vorhandene Spalte. Die Aufgabe mag einfach erscheinen, aber aufgrund des erwarteten Rückgabetyps der Funktion können unerwartete Herausforderungen auftreten.
Zunächst könnten Sie versuchen, die Ausgabe von zuzuweisen eine Funktion direkt zu einem Bereich von Indizes in einem DataFrame mithilfe der df.ix[: ,10:16] = df.textcol.map(extract_text_features)-Syntax. Allerdings kann dieser Ansatz aufgrund des inkompatiblen Rückgabetyps der Funktion häufig zu Fehlern führen.
Eine mögliche Lösung besteht darin, mit df.iterrows( über jede Zeile des DataFrame zu iterieren. ). Mit dieser Methode können Sie die Funktion auf jede Zeile einzeln anwenden und die Ergebnisse als Tupel erfassen. Dieser Ansatz kann jedoch erheblich langsamer sein als andere Optionen.
Ein effizienterer und flexiblerer Ansatz besteht darin, die Funktion zip() in Verbindung mit map() zum Erstellen zu verwenden die neuen Spalten. Die Funktion zip() fasst die Ausgabe der Funktion zu einem Tupel zusammen, das dann in einzelne Spalten entpackt werden kann. Der folgende Code zeigt beispielsweise, wie man mit der zip()-Methode sechs neue Spalten erstellt:
df['p1'], df['p2'], df['p3'], df['p4'], df['p5'], df['p6'] = zip(*df['num'].map(powers))
Die jüngsten Updates für Pandas haben praktischere Methoden zum Anwenden von Funktionen auf Spalten und zum Erstellen neuer Spalten eingeführt. Mit der Methode df.apply() können Sie beispielsweise das Ausgabeformat (DataFrame, Serie oder Liste) angeben und zusätzliche Parameter verarbeiten. Darüber hinaus können Sie mit der Methode df.assign() direkt neue Spalten erstellen, ohne die Ausgabe explizit zuzuweisen. Diese neueren Methoden bieten mehr Flexibilität und Effizienz beim Erstellen mehrerer neuer Spalten basierend auf einer Funktion.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3