辞書をmap
関数に渡して、Pandasデータフレームの列の値を再コード化します。しかし、元の系列に値がある場合、次のようになります。辞書に明示的に記載されていない場合は、NaN
に再コード化されます。簡単な例を次に示します。
タイピング...
s = pd.Series(['one','two','three','four'])
...シリーズを作成します
0 one
1 two
2 three
3 four
dtype: object
しかし、地図を適用すると...
recodes = {'one':'A', 'two':'B', 'three':'C'}
s.map(recodes)
...シリーズを返します
0 A
1 B
2 C
3 NaN
dtype: object
シリーズs
のいずれかの要素がrecodes
ディクショナリにない場合でも、変更されないままにしておくことをお勧めします。つまり、以下のシリーズを返したいと思います(four
の代わりに元のNaN
を使用)。
0 A
1 B
2 C
3 four
dtype: object
これを行う簡単な方法はありますか?たとえば、map
関数に渡すオプションはありますか?私が抱えている課題は、再コーディングしているシリーズに含まれる可能性のあるすべての値を常に予測できるとは限らないことです。データは将来更新され、新しい値が表示される可能性があります。
ありがとう!
replace
の代わりに map
を使用します。
>>> s = pd.Series(['one','two','three','four'])
>>> recodes = {'one':'A', 'two':'B', 'three':'C'}
>>> s.map(recodes)
0 A
1 B
2 C
3 NaN
dtype: object
>>> s.replace(recodes)
0 A
1 B
2 C
3 four
dtype: object