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?

  • Data Conversion Error beim Anwenden einer Funktion auf jede Zeile in pandas Python
  • Python pandas dataframe schneiden, mit if bedingung
  • Pandas: Wie man Zeilen aus einem Dataframe auf der Grundlage einer Liste entfernt?
  • Python Applymap nimmt Zeit zum Laufen
  • Überprüfen Sie die Gültigkeit für Flagsäulen in mehreren Zeilen Pandas
  • Wie kann man überprüfen, ob ein Wert in der Liste in der Auswahl aus dem Pandas-Datenrahmen ist?
  • 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.