Как изменить несколько столбцов, применяя if else к нескольким столбцам фрейма данных pandasPython

Программы на Python
Ответить
Anonymous
 Как изменить несколько столбцов, применяя if else к нескольким столбцам фрейма данных pandas

Сообщение Anonymous »

У меня есть dataFrame со столбцами «Возраст», «Зарплата» и другими, если я использовал:

Код: Выделить всё

df['Age'] = df['Age'].apply(lambda x : x+100 if x>30 else 0)
Затем я могу изменить столбец «Возраст» с помощью условия if else. Также, если бы я использовал:

Код: Выделить всё

df[['Age', 'Salary']] = df[['Age', 'Salary']].apply(lambda x : x+100)
Затем я могу применить лямбда-уравнение к каждому столбцу независимо. Но как только я использую условие if else для обоих столбцов как:

Код: Выделить всё

df[['Age', 'Salary']] = df[['Age', 'Salary']].apply(lambda x : x+100 if x>30 else 0)
Затем я получаю следующую ошибку:
ValueError: истинное значение серии неоднозначно. Используйте a.empty, a.bool(), a.item(), a.any() или a.all().
Итак, как я могу изменить столбцы Age, Salary и n, применяя то же самое if else или другое лямбда-условие к каждому столбцу независимо?
Я знаю два возможных решения:
  • Использовать for для вызова каждого столбца:

Код: Выделить всё

cols = ['Age', 'Salary'] for i in cols:  df[i] = df[i].apply(lambda x : x+100 if x>30 else 0)
  • Чтобы использовать команду «Применить» для каждого столбца:

Код: Выделить всё

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)
Есть ли способ сделать то же самое, но только в одной строке (например, в коде, который я пробовал), с помощью apply или другой функции?

Подробнее здесь: https://stackoverflow.com/questions/798 ... aframe-col
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»