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?

  • Wie lese ich eine .xlsx-Datei mit der Pandas-Bibliothek in iPython?
  • Index in Pandas DataFrame neu zuordnen
  • Holen Sie sich nicht-Null-Elemente in einem Pandas DataFrame
  • Wie konvertiere man das Pandas DataFrame-Ergebnis in das benutzerdefinierte json-Format
  • Python pandas isin methode
  • Zählfrequenz der Werte in der Pandas DataFrame Spalte
  • 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.