как заменить пустые значения серии на NaN в python - PullRequest
0 голосов
/ 26 июня 2018

Я перебираю количество столбцов и сохраняю их итоговые статистические данные, такие как среднее значение, медиана, асимметрия и эксцесс, как указано ниже:

metrics_dict['skewness'] = data_col.skew().values[0]
metrics_dict['kurtosis'] = data_col.kurt().values[0]
metrics_dict['mean'] = np.mean(data_col)[0]
metrics_dict['median'] = np.median(data_col)

Однако для некоторых столбцов выдается ошибка, как показано ниже:

IndexError: index out of bounds

Ниже указан столбец:

Index          device
61021           C:2
61022          D:3+
61023          D:3+
61024           B:1
61025          D:3+
61026           C:2 

Я просто хочу добавить NA к dict в случае такого столбца, и ошибка не прерывает мой цикл.Здесь index - это просто индекс информационного блока, а работающий столбец - устройство.Обратите внимание, что данные имеют большое количество числовых столбцов (~ 500), где 2-3 столбца похожи на устройство, и поэтому мне нужно просто добавить NA к dict для них и перейти к следующему столбцу.Может кто-нибудь сказать, пожалуйста, как это сделать в Python?

Ответы [ 3 ]

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

Вы можете попробовать попробовать / исключить IndexError

try:
   # whatever you do that might rise an IndexError
except IndexError:
   # append NA to dict
0 голосов
/ 26 июня 2018

Поскольку эта статистика имеет смысл только для числовых столбцов, вы можете попробовать выделить числовые столбцы. Это возможно, используя pd.DataFrame.select_dtypes:

numerics = ['int16', 'int32', 'int64', 'float16', 'float32', 'float64']

numeric_cols = df.select_dtypes(include=numerics).columns

for col in df:
    if col in numeric_cols:
        # calculate & add some values to dictionary
    else:
        # add NA values to dictionary
0 голосов
/ 26 июня 2018

Выберите столбец для фрейма данных, в котором вы хотите установить пустые значения в nan.

df[df['col'] == ''] = np.nan

Надеюсь, это поможет.

...