2016-06-22 2 views
1

У меня есть DataFrame, который выглядит следующим образом (ключ адрес индекс):Как рассчитать среднее из панд DataFrame с NaN значения

address date1 date2 date3 date4 date5 date6 date7 <email> NaN NaN NaN 1 NaN NaN NaN

Я хочу, чтобы вычислить среднее через строка, но когда я использую DataFrame.mean(axis=1), я получаю NaN (в приведенном выше примере я хочу среднее значение 1). Я получаю NaN, даже когда использую DataFrame.mean(axis=1, skipna=True, numeric_only=True). Как я могу получить правильное среднее для строк в этом DataFrame?

+1

Что здесь отображается 'df.info()'? у вас нет числовых типов, несмотря на появление, например, это строка в действительности – EdChum

+0

'dtypes: float64 (6), object (1)' Он регистрирует объект 1 как объект. –

+0

вы указали, что у вас есть 8 столбцов, но если адрес фактически является вашим индексом, тогда у вас есть только 7 столбцов, поэтому это не имеет смысла, вы можете проверить, действительно ли 'date4' dtype является числовым и если не преобразовать его doint' df ['date4'] = df ['date4']. astype (int) 'или' float' – EdChum

ответ

1

Несмотря на внешние ваш dtypes не числовой следовательно NaN значения, вы должны бросить тип использования astype:

df['date4'] = df['date4'].astype(int) 

, то он будет работать, в зависимости от того, как вы загрузили/создал эти данные, то он должен быть то, что вы должны исправить на данном этапе, а не как шаг постобработки, если это возможно

вы можете подтвердить то, что dtypes являются, но, глядя на выходе из df.info(), а также вы можете фильтровать нецифровых столбцы с помощью select_dtypes: df.select_dtypes(include=[np.number]), чтобы выбрать только числовые столбцы

Смежные вопросы