Pandas .fillna() не работает с .sample()

#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])