Проблема при попытке удалить строки, содержащие nan или inf, с использованием кадра данных Pandas - PullRequest
0 голосов
/ 12 мая 2018

Я получаю эту ошибку от scikit-learn:

ValueError: Input contains NaN, infinity or a value too large for dtype('float64').

Что является результатом этой проверки здесь .Исходя из этой записи , я могу использовать df.replace([np.inf, -np.inf], np.nan).dropna(axis=1), потому что я хочу обнаружить любые значения nan или inf, а затем удалить строку, содержащую любое из них .Однако я использую Python 3.6, поэтому ошибка говорит:

AttributeError: 'NoneType' object has no attribute 'dropna'

Как мне изменить df.replace([np.inf, -np.inf], np.nan).dropna(axis=1), чтобы я мог обнаружить строку, содержащую inf или nan, а затем удалить это?

1 Ответ

0 голосов
/ 12 мая 2018

У вас почти было это: используйте dropna() с axis=0 (по умолчанию), так как это строки. Он отбросит все строки, в которых есть NaN:

df = pd.DataFrame({'x':[1,2,np.nan, np.inf, 3], 'y':[5,6,7,8,np.inf]})
>>> df

          x         y
0  1.000000  5.000000
1  2.000000  6.000000
2       NaN  7.000000
3       inf  8.000000
4  3.000000       inf

new_df = df.replace([np.inf, -np.inf], np.nan).dropna(axis=0)

>>> new_df
     x    y
0  1.0  5.0
1  2.0  6.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...