groupby要素に 'bfill'または 'ffill'を使用するのは簡単ですが、2番目の列の特定の値でnaを満たす必要がある場合はどうしますか? 3列目の状態ですか?例えば(パンダ)groupbyとカラムの条件に基づいてNaNを記入してください
は:
>>> df=pd.DataFrame({'date':['01/10/2017', '02/09/2017', '02/10/2016','01/10/2017', '01/11/2017', '02/10/2016'], 'a':[1,1,1,2,2,2], 'b':[4,np.nan,6, 5, np.nan, 7]})
>>> df
a b date
0 1 4.0 01/10/2017
1 1 NaN 02/09/2017
2 1 6.0 02/10/2016
3 2 5.0 01/10/2017
4 2 NaN 01/11/2017
5 2 7.0 02/10/2016
I「」はカラムによってグループ必要があり、その行の日付がNaN列の日付に最も近い列「B」値とはNaNを埋めます。
ので、出力は次のようになります。
a b date
0 1 4.0 01/10/2017
1 1 6.0 02/09/2017
2 1 6.0 02/10/2016
3 2 5.0 01/10/2017
4 2 5.0 01/11/2017
5 2 7.0 02/10/2016
のNaN日と、そのグループ内の他の日付のリストを受け取り、最も近い日付を返しますclosest_date()関数があるとします。
私は、行を反復処理する必要のない、ラムダでapply()を使用できる理想的なクリーンなソリューションを探しています。何か案は?
あなたのデータを持った後、誤っているようです。グループの場合は '1'あなたは6' '選択した==は' nan'に記入します。しかし、「01/10/2017」は「02/09/2017」に近く、「4」は塗りつぶし値であったはずであることが示唆される。 – piRSquared