是否有一种方便的方法可以用数组或列的(第一个)值填充 na 值?
想象一下以下 DataFrame:
dfcolors = pd.DataFrame({'Colors': ['Blue', 'Red', np.nan, 'Green', np.nan, np.nan, 'Brown']})
Colors
0 Blue
1 Red
2 NaN
3 Green
4 NaN
5 NaN
6 Brown
我想用另一个 DataFrame 或数组中的值填充 NaN 值,所以:
dfalt = pd.DataFrame({'Alt': ['Cyan', 'Pink']})
Alt
0 Cyan
1 Pink
当有更多的 NaN 时,填充值应该保留一些 NaN。并且当有更多的填充值时,并不是所有的都会被使用。所以我们必须做一些计数:
n_missing = len(dfcolors) - dfcolors.count().values[0]
n_fill = min(n_missing, len(dfalt))
数字n_fill
是可以填充的值的数量。
选择可以/应该填充的 NaN 值可以通过以下方式完成:
dfcolors.Colors[pd.isnull(dfcolors.Colors)][:n_fill]
2 NaN
4 NaN
Name: Colors, dtype: object
选择填充值
dfalt.Alt[:n_fill]
0 Cyan
1 Pink
Name: Alt, dtype: object
他们我陷入了这样的困境:
dfcolors.Colors[pd.isnull(dfcolors.Colors)][:n_fill] = dfalt.Alt[:n_fill]
哪个不起作用...任何提示都会很棒。
这是我想要的输出:
Colors
0 Blue
1 Red
2 Cyan
3 Green
4 Pink
5 NaN
6 Brown
NaN值是从上到下填充的,如果填充值比NaN的多,填充值也是从上到下选择的