Создание условного столбца: If-Elif-Else в Pandas
Данная проблема требует добавления нового столбца в DataFrame на основе ряда условных критериев. Задача заключается в реализации этих условий при сохранении эффективности и читабельности кода.
Решение с использованием приложения-функции
Один из подходов предполагает создание функции, которая сопоставляет каждую строку с желаемым результатом. на основе условий:
def f(row):
if row['A'] == row['B']:
return 0
elif row['A'] > row['B']:
return 1
else:
return -1
df['C'] = df.apply(f, axis=1)
Этот метод удобен для чтения и прост в реализации, но он не векторизован и может привести к проблемам с производительностью при работе с большими наборами данных.
Векторизованное решение
Для повышения эффективности рекомендуется использовать векторизованный подход с использованием функции NumPy np.where:
df['C'] = np.where(
df['A'] == df['B'], 0, np.where(
df['A'] > df['B'], 1, -1))
Эта операция выполняет условный выбор поэлементно в DataFrame, в результате чего создается новый столбец с нужными значениями.
Этот векторизованный подход обеспечивает значительный выигрыш в производительности по сравнению с методом, основанным на функциях. Это также обеспечивает более краткую и удобочитаемую реализацию условных критериев.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3