Dynamisches Hinzufügen von Spalten zu pandas dataframe

Ich habe ein Pandas-Dataframe mit Spaltennamen 'a', 'b', …, 'n'.

Für jede Spalte möchte ich die tägliche Veränderung für die Spalten zeigen und das Dataframe erweitern, um zu bestehen aus: 'a', 'b', …, 'n', 'a_daily', 'b_daily', … ' N_daily_change '.

Ich habe den folgenden Code ausgesucht (was KeyError gibt: 'column_names'):

for column_names in df: df[str(column_names) + '_daily'] = df['column_names'].pct_change(freq=1).fillna(0) 

Was muss ich ändern, damit es funktioniert?

  • Pandas dataframe links verschmelzen ohne reindexing
  • Pandas DatetimeIndex Umrechnungstermine bis 1970
  • Python pandas dataframe Spalten konvertieren zu dict Schlüssel und Wert
  • So bearbeiten Sie mehrere Elemente in df.columns
  • Anwenden der Funktion auf Pandas dataframe nach Spalte
  • Pandas - kumulative Operationen auf dtype-Objekten
  • 2 Solutions collect form web for “Dynamisches Hinzufügen von Spalten zu pandas dataframe”

    Verwenden Sie den Variablennamen nicht einen String:

     for column_name in df: df[column_name + '_daily'] = df[column_name].pct_change(freq=1).fillna(0) 

    Namen sind importiert. Benutze das Singular-Formular: column_name .

    Sie müssen den Spaltennamen nur nicht als String übergeben:

     for column_names in df: df[str(column_names) + '_daily'] = df[column_names].pct_change(freq=1).fillna(0) 

    Auch ich denke, du brauchst den Spaltennamen nicht wieder in str zu werfen:

     for column_names in df: df[column_names + '_daily'] = df[column_names].pct_change(freq=1).fillna(0) 

    sollte arbeiten.

    So wird der Fehler angehoben, weil df['column_names'] nicht existiert, die iterable sind die Spaltennamen so übergeben, wie der Schlüssel nur funktionieren wird

    Python ist die beste Programmiersprache der Welt.