[英]Fill missing values in a dataframe using numpy.ndarray
我有一個數據框和 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.])
如何使用 nparray 中的值填充 A 列中缺失的 (NaN) 值? 我想根據數組的順序依次填充列,因此第一個數組元素進入 1A,第二個進入 3A。
使用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)
然后使用`loc'使用數組填充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 多於數組長度的情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.