#python #pandas #random #fillna
#python #pandas #Случайный #fillna
Вопрос:
У меня есть набор данных со столбцом state
, уникальные значения которого состоят из ['released', 'isolated', 'deceased', nan]
. Я пытался приписать недостающие данные, используя случайную выборку, например:
for column in ['sex','state','city']:
df[column].fillna(df[column].sample(), inplace=True)
sex
Похоже, что столбец был правильно рассчитан; недостающих данных больше нет sex
. Однако state
столбец, похоже, не вменяется. Когда я просматриваю столбец, я получаю следующее:
In [1]: df['state'].sample()
Out[1]: 1391 released
Name: state, dtype: object
Таким образом, столбец имеет соответствующее имя в цикле вменения выше. Когда я пытаюсь сделать то же самое с необработанным фреймом данных, я получаю аналогичную серию NaN
:
In [2]: new=pd.DataFrame({'blank':[np.nan for i in range(0,100)]})
In [3]: new['blank'].fillna(df['state'].sample())
Out[3]:
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
..
95 NaN
96 NaN
97 NaN
98 NaN
99 NaN
Name: blank, Length: 100, dtype: float64
Почему state
столбец неправильно выбирает для fillna()
?
Ответ №1:
Вы не можете fillna
с Series
, поскольку он будет соответствовать index
new=pd.DataFrame({'blank':[np.nan for i in range(0,100)]})
new['blank'].fillna(df['state'].sample().iloc[0])