Ausgabe
Bei der Verwendung von Pandas muss ich in vielen Funktionsaufrufen inplace=True angeben. Ich verwende das viel mehr als den Standardwert, der per Konvention tendenziell inplace=False ist, wo immer er definiert ist.
Gibt es eine Möglichkeit, eine (vielleicht globale) Variable wie z
inplace = True
und dann etwas tun, das bewirkt, dass diese Variable automatisch an jede pandas-Funktion übergeben wird, die ein ‘inplace’-Schlüsselwortargument hat, wodurch die Notwendigkeit entfällt, es jedes Mal einzugeben?
Konkret wäre das eine Ideallösung
df.set_index(['id', 'year'])
gleichwertig
df.set_index(['id', 'year'], inplace=True)
und ähnlich für jede Pandas-Funktion, die ein ‘Inplace’-Argument akzeptiert.
Dies scheint eine allgemeine Python-Frage zu sein – aber mein aktueller Kontext sind Pandas. Ich habe keine weiteren Fragen zum Thema Benutzerüberschreibung von Standardargumentwerten gefunden (außer durch die Definition einer Art Wrapper-Funktion, die eine ähnliche Menge an Eingaben zum Aufrufen erfordern würde). Soweit es darum geht, etwas auszuprobieren, habe ich keine Anhaltspunkte. Ich weiß bereits, dass das bloße Definieren einer Variablen mit diesem Namen im aufrufenden Gültigkeitsbereich den Wert nicht einem Argument innerhalb des Gültigkeitsbereichs einer Funktion zuweist.
Ich verwende Python 3.7.6 und Pandas 0.25.3, falls das wichtig ist.
Lösung
Zwei Jahre später würde ich vorschlagen, dieses Problem zu lösen, indem Sie häufig verwendete Wörter einfach kwargs
in einem Wörterbuch speichern und entpacken:
kws = {'inplace': True}
df.set_index(['id', 'year'], **kws)
Beantwortet von – Attila der Spaß
Antwort geprüft von – David Goodson (FixError Volunteer)