使用列表中的项填充数据框中的缺失值的最佳方法是什么? 例如:
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
答案 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
,因为它与NaN
列2
的{{1}}索引值相匹配。< / p>