Каков самый быстрый / простой способ отбросить значения nan и inf / -inf из DataFrame pandas без сброса mode.use_inf_as_null
? Я хотел бы иметь возможность использовать аргументы subset
и , за исключением значений, которые считаются пропущенными, например:how
dropna
inf
df.dropna(subset=["col1", "col2"], how="all", with_inf=True)
Это возможно? Есть ли способ сказать, dropna
чтобы включить inf
в его определение отсутствующих значений?
inf
значения на заранее определенные,int
например0
, в определенном столбце?.replace(..., 0)
. Чтобы просто сделать по столбцам, вы обновляете эти столбцы, т. Е.df[cols] = df[cols].replace(..., 0)
replace
не работает на месте, поэтомуDataFrame
возвращается новоеВ контексте контекста это возможно без постоянной настройки
use_inf_as_na
. Например:Конечно , он может быть установлен , чтобы лечить ,
inf
как наNaN
постоянной основе сДля более старых версий замените
use_inf_as_na
наuse_inf_as_null
.источник
use_inf_as_null
устарела и будет удалена в следующей версии. Используйтеuse_inf_as_na
вместо этого. Добавить / обновить ответ?inf
как нули на глобальном уровне настройки, а не на рабочем уровне. Это может потенциально сэкономить время, вначале вменяя значения.Вот еще один метод, использующий
.loc
для замены inf на nan в серии:Итак, в ответ на оригинальный вопрос:
источник
Используйте (быстро и просто):
Этот ответ основан на ответе Дугра на другой вопрос. Вот пример кода:
Результат:
источник
Еще одним решением будет использование
isin
метода. Используйте его, чтобы определить, является ли каждое значение бесконечным или отсутствующим, а затем объединитеall
метод, чтобы определить, являются ли все значения в строках бесконечными или отсутствуют.Наконец, используйте отрицание этого результата, чтобы выбрать строки, которые не имеют всех бесконечных или пропущенных значений через логическое индексирование.
источник
Вышеупомянутое решение изменит те
inf
, которые не находятся в целевых столбцах. Чтобы исправить это,источник
{v: lst for v in cols}
Вы можете использовать
pd.DataFrame.mask
сnp.isinf
. Сначала убедитесь, что все ваши ряды данных имеют типfloat
. Тогда используйтеdropna
с вашей существующей логикой.источник