Ошибка: невозможно удалить бесконечные значения из DataFrame - PullRequest
0 голосов
/ 28 июня 2018

Это мой DataFrame df:

col1       col2
-0.441406  2.523047
-0.321105  1.555589 
-0.412857  2.223047
-0.356610  2.513048

Когда я проверяю df, я вижу, что есть некоторые бесконечные значения.

np.any(np.isnan(df))
np.all(np.isfinite(df))

False 
True

В чем разница между NaN и бесконечностью? Кроме того, как я могу удалить все бесконечные значения, чтобы получить True в np.all(np.isfinite(X))?

Вот что я попробовал:

df = df.replace([np.inf, -np.inf], np.nan).dropna(how="all")

Но все равно проверка infinite дает мне True.

enter image description here

Более того, .apply(lambda s: s[np.isfinite(s)].dropna()).count() дает мне то же количество строк во всех столбцах, что и просто df.shape, что указывает на отсутствие бесконечных значений. Но в этом случае, почему np.all(np.isfinite(df)) возвращает True?

1 Ответ

0 голосов
/ 28 июня 2018

Ваш вопрос похож на отбрасывание бесконечных значений с фреймов данных в пандах? , ты пробовал:

df.replace([np.inf, -np.inf], np.nan).dropna(subset=["col1", "col2"], how="all")

np.nan не считается finite, вы можете заменить np.nan на любой конечный number, см. Этот код, например:


import pandas as pd
import numpy as np

df = pd.DataFrame(columns=list('ABC'))
df.loc[0] = [1,np.inf,-np.inf]
print df

print np.all(np.isfinite(df))

df_nan = df.replace([np.inf, -np.inf], np.nan).dropna(subset=df.columns, how="all")
print df_nan

print np.all(np.isfinite(df_nan))

df_0 = df.replace([np.inf, -np.inf], 0).dropna(subset=df.columns, how="all")
print df_0

print np.all(np.isfinite(df_0))

Результат:

     A    B    C
0  1.0  inf -inf
False
     A   B   C
0  1.0 NaN NaN
False
     A    B    C
0  1.0  0.0  0.0
True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...