So ändern Sie mehrere Spalten, indem Sie sie auf mehrere Pandas-Datenrahmenspalten anwendenPython

Python-Programme
Anonymous
 So ändern Sie mehrere Spalten, indem Sie sie auf mehrere Pandas-Datenrahmenspalten anwenden

Post by Anonymous »

Ich habe einen DataFrame mit den Spalten „Alter“, „Gehalt“ und andere, wenn ich verwendet habe:

Code: Select all

df['Age'] = df['Age'].apply(lambda x : x+100 if x>30 else 0)
Dann kann ich die Altersspalte mit der if else-Bedingung ändern. Auch wenn ich verwendet habe:

Code: Select all

df[['Age', 'Salary']] = df[['Age', 'Salary']].apply(lambda x : x+100)
Dann kann ich die Lambda-Gleichung auf jede Spalte unabhängig anwenden. Aber sobald ich eine if else-Bedingung für beide Spalten verwende als:

Code: Select all

df[['Age', 'Salary']] = df[['Age', 'Salary']].apply(lambda x : x+100 if x>30 else 0)
Dann erhalte ich die folgende Fehlermeldung:
ValueError: Der Wahrheitswert einer Serie ist nicht eindeutig. Verwenden Sie a.empty, a.bool(), a.item(), a.any() oder a.all().
Wie kann ich also die Spalten „Alter“, „Gehalt“ und „n“ ändern, indem ich unabhängig voneinander die gleiche if else- oder andere Lambda-Bedingung auf jede Spalte anwende?
Ich kenne zwei mögliche Lösungen:
  • So verwenden Sie ein for, um jede Spalte aufzurufen:

Code: Select all

cols = ['Age', 'Salary'] for i in cols:  df[i] = df[i].apply(lambda x : x+100 if x>30 else 0)
  • So verwenden Sie die Anwendung für jede Spalte:

Code: Select all

df['Age'] = df['Age'].apply(lambda x : x+100 if x>30 else 0) df['Salary'] = df['Salary'].apply(lambda x : x+100 if x>30 else 0)
Gibt es eine Möglichkeit, dasselbe zu tun, aber nur in einer Zeile (z. B. dem Code, den ich ausprobiert habe) mit „Apply“ oder einer anderen Funktion?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post