【问题标题】:Fill missing values in a dataframe using numpy.ndarray使用 numpy.ndarray 填充数据框中的缺失值
【发布时间】:2020-03-27 16:08:27
【问题描述】:

我有如下的数据框和 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。

【问题讨论】:

    标签: python arrays pandas numpy dataframe


    【解决方案1】:

    使用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 多于数组长度的情况。

    【讨论】:

      猜你喜欢
      • 2018-12-17
      • 1970-01-01
      • 2016-04-30
      • 1970-01-01
      • 1970-01-01
      • 2020-06-06
      • 1970-01-01
      • 2021-09-21
      • 1970-01-01
      相关资源
      最近更新 更多