Заполните NANS в фрейме данных разными номерами

#python #pandas #replace #nan

#питон #панды #заменять #nan

Вопрос:

У меня есть df:

 df = pd.DataFrame({'Col1': [np.NaN, 1, 2], 'Col2': [7, 9, np.NaN], 'Col3': [np.NaN, np.NaN, 5]})  

Как я могу заменить каждый NaN на df случайное уникальное число , которого df , например, не существует:

 df = pd.DataFrame({'Col1': [8, 1, 2], 'Col2': [7, 9, 11], 'Col3': [30, 33, 5]})  

Большое спасибо.

Ответ №1:

один из способов-замаскировать df одинаковым размером случайных чисел:

 import random total_size = df.shape[0]*df.shape[1] rands = [x for x in random.sample(range(total_size*10), total_size*2) if x not in df.values][:total_size] rands_mat = np.array(rands).reshape((df.shape)) df.mask(pd.isnull(df), rands_mat)  
Col1 Col2 Col3
0 4 7 23
1 1 9 19
2 2 71 5

Комментарии:

1. это работает. большое вам спасибо 🙂