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
NaN 値を別の DataFrame または配列の値で埋めたいので、次のようにします。
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 よりも多くの塗りつぶし値がある場合は、塗りつぶし値も上から下に選択されます。