Значения Pandas Dataframe nan не заменяют - PullRequest
0 голосов
/ 04 июня 2018

Попытка заменить значения в моем фрейме данных, которые перечислены как 'nan' (обратите внимание, не 'NaN')

Я прочитал в файле Excel, а затем попытался заменить значения Nan, как это:

All_items_df = ALL_df[df_items].fillna(' ')

Наконец, я получаю вывод, который все еще содержит 'nan'

All_items_df ['Colour'].head(10)
Out[]: 
7     nan
8     nan
9     nan
10    nan
13    nan
14    nan
15    nan
16    nan
18    nan
19    nan
Name: Colour, dtype: object

Проверка значений nan с помощью isna () или isnull (). Value.all () дает мнеЛожь для вышеуказанных значений.Почему он не распознает как значения nan / na?

All_items_df ['Colour'].isnull().head(10)
Out[123]: 
7     False
8     False
9     False
10    False
13    False
14    False
15    False
16    False
18    False
19    False
Name: Minor Feats, dtype: bool

Затем я записываю в файл csv и записываю в файл 'nan', даже если не указывать nan

All_items_df.to_csv(folderpath + "All_items.csv",encoding="UTF-8", index=False, na_rep='')

Ответы [ 2 ]

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

Убедитесь, что вы прочитали nan значения как NaN.Это можно сделать с помощью параметра в pd.read_excel:

df = pd.read_excel('file.xlsx', na_values=['nan'])

Как ни странно, по умолчанию nan не считается значением NaN в pd.read_excel:

na_values ​​: скаляр, str, list-like или dict, по умолчанию None

Дополнительные строки для распознавания как NA / NaN.Если указано dict, конкретные значения NA для каждого столбца.По умолчанию следующие значения интерпретируются как NaN: '', '# N / A', '# N / AN / A', '#NA', '-1. # IND', '-1. # QNAN','-NaN', '-nan',

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

Ваши nan выглядят как строки, а не как нулевые значения.Вы можете использовать этот код для замены nan на фактические значения NULL, прежде чем приступать к каким-либо вычислениям, которые вы планируете делать:

import numpy as np
df.Colour.replace('nan', np.nan, inplace=True)

Пример :

>>> df
  Colour
0    nan
1    nan
2    nan
3   Blue
4    nan

df.Colour.replace('nan', np.nan, inplace=True)
df.fillna('', inplace=True)

>>> df
  Colour
0       
1       
2       
3   Blue
4       
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...