2017-03-17 16 views
2

最後の非= NaN値に依存する値を持つ列に欠落値(NaN)を入力したいと思います。私のデータは、この本になります。最後の値に応じてデータフレーム列のNaNを埋めてください。

In [3]: A = pd.DataFrame(['X', np.nan, np.nan, 'Y',np.nan, np.nan, 'X', np.nan]) 

In [4]: A 
Out[4]: 
    0 
0 X 
1 NaN 
2 NaN 
3 Y 
4 NaN 
5 NaN 
6 X 
7 NaN 

私はfillna機能の認識していますが、これは私が何をしたいのか、正確ではありません。これは私に次のようになります:

例えば
In [5]: A.fillna(method='ffill') # Not what I want to do 
Out[5]: 
    0 
0 X 
1 X 
2 X 
3 Y 
4 Y 
5 Y 
6 X 
7 X 

、私は最後の値が「Y」だった場合は、「I」最後の値であった場合「X」と「J」を記入したいと思います。私。

Out[5]: # How do I get this? 
    0 
0 X 
1 I 
2 I 
3 Y 
4 J 
5 J 
6 X 
7 I 

私はループでこれを行うことができると確信していますが、それに頼ることなくどのようにしますか?

答えて

6

あなたがreplaceffillを使用して適用されたマッピングを用いてデータフレームの前方に充填されたバージョンでfillnaを使用し、その後、所望の充填値に前回値をマッピングする辞書を作成することができ:

nan_map = {'X': 'I', 'Y': 'J'} 
A = A.fillna(A.replace(nan_map).ffill()) 

結果出力:

0 
0 X 
1 I 
2 I 
3 Y 
4 J 
5 J 
6 X 
7 I 
+0

非常に賢い!どうもありがとう。 –

+0

Clever + simple ==すばらしい答え – piRSquared

関連する問題