pd.Series.notnull
выводит логический ряд в зависимости от того, является ли ваш ряд нулевым.Он не фильтрует серию для ненулевых значений.На самом деле такая явная фильтрация не нужна.Вы должны использовать векторизованные вычисления, как описано ниже, при работе с числовыми данными в Pandas.
Вероятно, вам нужно рассмотреть только пару сценариев:
1.серия с плавающей запятой => без преобразования
Если ваша серия float
, т.е. df['LENGTH'].dtype
возвращает тип float
, не выполняйте преобразование или проверку.Просто используйте:
df['LENGTH'] *= 12
2.серия объектов => использовать pd.to_numeric
Если ваша серия имеет тип object
, сначала преобразуйте ее в float
:
df['LENGTH'] = pd.to_numeric(df['LENGTH'], errors='coerce')
df['LENGTH'] *= 12
pd.Series.apply
спользовательская функция, с другой стороны, не векторизована: внутренне, это просто тонко завуалированный цикл.Избегайте этого, как чумы.