Python の「map」関数は NaN を挿入しますが、代わりに元の値を返すことは可能ですか? 質問する

Python の「map」関数は NaN を挿入しますが、代わりに元の値を返すことは可能ですか? 質問する

Pandas データフレームの列の値を再コード化するために、関数に辞書を渡していますmap。ただし、元のシリーズに辞書に明示的に含まれていない値がある場合、その値は に再コード化されることに気付きました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です。 私が抱えている課題は、再コーディングしているシリーズに含まれる可能性のあるすべての値を常に予測できるわけではないことです。データは将来更新され、新しい値が現れる可能性があります。

ありがとう!

ベストアンサー1

使用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

おすすめ記事