Используйте timeits
, Люк!
![enter image description here](https://i.stack.imgur.com/BRHma.png)
Заключение
Постижения списков лучше всего работают с меньшими объемами данных, поскольку они требуют очень мало накладных расходов, даже если они не векторизованы. OTOH, на больших данных, loc
и numpy.where
работают лучше - векторизация побеждает день.
Имейте в виду, что применимость метода зависит от ваших данных, количества условий и типа данных ваших столбцов. Мое предложение состоит в том, чтобы проверить различные методы на ваших данных, прежде чем выбрать вариант.
Тем не менее, одно из достоинств этого факта заключается в том, что списочные представления довольно конкурентоспособны - они реализованы в C и высоко оптимизированы для производительности.
Код для сравнения, для справки . Вот функции по времени:
def numpy_where(df):
return df.assign(is_rich=np.where(df['salary'] >= 50, 'yes', 'no'))
def list_comp(df):
return df.assign(is_rich=['yes' if x >= 50 else 'no' for x in df['salary']])
def loc(df):
df = df.assign(is_rich='no')
df.loc[df['salary'] > 50, 'is_rich'] = 'yes'
return df