#string #numpy #dataframe #nan #fillna
#строка #тупой #фрейм данных #nan #филлна
Вопрос:
У меня есть простые данные, как показано ниже. Я пытаюсь заполнить содержимое внутри, но это не работает
кадр , подобный этому;
import pandas as pd
import numpy as np
V1 = np.array([1,2,6, np.nan, 7, 1, np.NaN, 9,15])
V4 = np.array(['IT','IK', np.NaN, 'IK','IK','IK','IK','IT','IT'])
df = pd.DataFrame({'sl': V1,
'departman': V4})
df
дает мне:
sl departman
0 1.0 IT
1 2.0 IK
2 6.0 nan
3 NaN IK
4 7.0 IK
5 1.0 IK
6 NaN IK
7 9.0 IT
8 15.0IT
После того, как я написал это;
df['departman'].fillna(df.departman.mode()[0] )
Выдает:
0 IT
1 IK
2 nan
3 IK
4 IK
5 IK
6 IK
7 IT
8 IT
Name: departman, dtype: object
Ответ №1:
Я помню, что это однажды меня беспокоило в процессе производства. Ваш np.nan
файл преобразуется в строку "nan"
при создании фрейма данных. Смотрите с:
df.loc[2, 'departman']
и вы получите 'nan'
. Вам нужно преобразовать строку обратно в np.nan
или использовать loc:
mask = df['departman'] == 'nan'
Вывод:
sl departman
0 1.0 IT
1 2.0 IK
2 6.0 IK
3 NaN IK
4 7.0 IK
5 1.0 IK
6 NaN IK
7 9.0 IT
8 15.0 IT
df.loc[mask, 'departman'] = df.loc[~mask, 'departman'].mode()[0]