使用列表中的项目填充Pandas数据框中的缺失值

时间:2015-10-15 21:28:54

标签: python pandas

使用列表中的项填充数据框中的缺失值的最佳方法是什么? 例如:

pd.DataFrame([[1,2,3],[4,5],[7,8],[10,11,12],[13,14]])

        0   1   2
    0   1   2   3
    1   4   5 NaN
    2   7   8 NaN
    3  10  11  12
    4  13  14 NaN

list = [6, 9, 150]

得到这样的东西:

       0   1   2
   0   1   2   3
   1   4   5   6
   2   7   8   9
   3  10  11  12
   4  13  14  15

1 个答案:

答案 0 :(得分:1)

这实际上有点棘手,有点乱,如果你知道要填充NaN值的列,那么你可以用缺失值的索引为该列构造一个df将df传递给fillna

In [33]:
fill = pd.DataFrame(index =df.index[df.isnull().any(axis=1)], data= [6, 9, 150],columns=[2])
df.fillna(fill)

Out[33]:
    0   1    2
0   1   2    3
1   4   5    6
2   7   8    9
3  10  11   12
4  13  14  150

您无法传递dict(我的原始答案),因为dict键值是要匹配的列值,标量值将用于该列的所有NaN值你想要什么:

In [40]:
l=[6, 9, 150]
df.fillna(dict(zip(df.index[df.isnull().any(axis=1)],l)))

Out[40]:
    0   1   2
0   1   2   3
1   4   5   9
2   7   8   9
3  10  11  12
4  13  14   9

您可以看到它已将所有NaN替换为9,因为它与NaN2的{​​{1}}索引值相匹配。< / p>