Заполните пропущенные значения в кадре данных, используя numpy .ndarray - PullRequest
1 голос
/ 27 марта 2020

У меня есть датафрейм и nparray следующим образом

import pandas as pd
import numpy as np

​dic = {'A': {0: 0.9, 1: "NaN", 2: 1.8, 3: "NaN"}, 
     'C': {0: 0.1, 1: 2.8, 2: -0.1, 3: 0.5}, 
     'B': {0: 0.7, 1: -0.6, 2: -0.1, 3: -0.1},}

df=pd.DataFrame(dic)
print(df)

     A    C    B
0  0.9  0.1  0.7
1  NaN  2.8 -0.6
2  1.8 -0.1 -0.1
3  NaN  0.5 -0.1

a = np.array([1.,2.]) 
a

array([1., 2.])

Как мне заполнить отсутствующие (NaN) значения в столбце A значениями из nparray? Я хочу заполнить столбец последовательно в зависимости от порядка массива, чтобы первый элемент массива переходил в 1A, а второй - в 3A.

1 Ответ

1 голос
/ 27 марта 2020

Используйте numpy.tile для создания массива, повторяя элементы a

df['A'].replace('NaN', np.nan, inplace = True)

len_tile = math.ceil(df['A'].isnull().sum()/len(a))
non_null_a = np.tile(a, len_tile)

Затем используйте `lo c 'для заполнения NaN с использованием массива,

df.loc[df['A'].isnull(), 'A'] = non_null_a

    A       C       B
0   0.9     0.1     0.7
1   1.0     2.8     -0.6
2   1.8     -0.1    -0.1
3   2.0     0.5     -0.1

Примечание: для предоставленной вами фиктивной df просто используйте массив a для замены отсутствующих значений. Код, который я использовал, учитывает ситуацию, когда NaN больше, чем длина массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...