2017-03-13 13 views
1

欠損値を含むデータフレームがあります。Pythonは既存のデータに基づいて欠損値を埋め込みます

exam_id exam 
0  1 french 
1  2 italian 
2  3 chinese 
3  4 english 
4  3 chinese 
5  5 russian 
6  1 french  
7  NaN russian 
8  1 french 
9  2 italian 

私は既存の情報に基づいてロシア語試験の不足しているexam_idを記入したいと思います。 russianのexam_idは5なので、欠落したものに同じ値を割り当てたいと思います。

+0

?またはすべての欠損値の場合は – ryugie

+0

です。 – Sheron

答えて

3

あなたはグループexamによってあなたのデータフレームは、その後、ケース内ffill + bfillは、既存の値の前と後の値が不足している行うことができます。

df.groupby("exam").ffill().bfill() 

enter image description here

1

このアプローチは、唯一の欠損値を満たしていません。だから注意してください。しかし、これはまた、誤字脱字(例えば、「フランス語」が3としてコード化されている)を処理する。言語とその値の辞書を作成してマップに適用すると、新しいexam_id列が作成されます。ただし、言語が辞書に表示されていない場合(たとえば「フランス語」)、値が欠落することに注意してください。

language_test_map = {'french': 1, 
        'italian': 2, 
        'chinese': 3, 
        'english': 4, 
        'russian': 5} 

df['exam_id'] = df['exam'].map(language_test_map) 
関連する問題