将pandas.DataFrame的NaN值替换为list中的值

Mea*_*eet 5 python pandas

在使用该库的python脚本中pandas,我有一个数据集,假设有100行,其特征为"X",包含36个NaN值,以及大小为36的列表.

我想用列表中的36个值替换列"X"的所有36个缺失值.

这可能是一个愚蠢的问题,但我经历了所有的文档,无法找到方法来做到这一点.

这是一个例子:

INPUT

Data:   X      Y
        1      8
        2      3
        NaN    2
        NaN    7
        1      2
        NaN    2
Run Code Online (Sandbox Code Playgroud)

填料

List: [8, 6, 3]
Run Code Online (Sandbox Code Playgroud)

OUTPUT

Data:   X      Y
        1      8
        2      3
        8      2
        6      7
        1      2
        3      2
Run Code Online (Sandbox Code Playgroud)

bun*_*nji 8

从您的数据框开始 df

print(df)

     X  Y
0  1.0  8
1  2.0  3
2  NaN  2
3  NaN  7
4  1.0  2
5  NaN  2
Run Code Online (Sandbox Code Playgroud)

定义要填充的值(注意:filler列表中的元素数量必须与NaN数据框中的值相同)

filler = [8, 6, 3]
Run Code Online (Sandbox Code Playgroud)

过滤您的列(包含NaN值)并用您的列覆盖选定的行filler

df.X[df.X.isnull()] = filler

df.loc[df.X.isnull(), 'X'] = filler
Run Code Online (Sandbox Code Playgroud)

这使:

print(df)

     X  Y
0  1.0  8
1  2.0  3
2  8.0  2
3  6.0  7
4  1.0  2
5  3.0  2
Run Code Online (Sandbox Code Playgroud)

  • 根据警告中列出的[docs](http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy),您需要更改`df.X [df .X.isnull()]`到`df.loc [df.X.isnull(),'X']` (2认同)