微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python-pandas:映射到新列,不包括某些代码

我有一个键和值的字典.我想“映射”数据框列中的数字,其中原始列是键,新列是值.

但是,字典中未包含的任何值都应编码为999.

原始数据框:

     Col1
0    02
1    03
2    02
3    02
4    04
5    88
6    77

字典:

codes = {'01':'05',
         '02':'06',
         '03':'07',
         '04':'08'}

预期产量:

>>> df['ColNew'] = df['Col1'].map(codes)

     ColNew
0    06
1    07
2    06
3    06
4    08
5    999
6    999

除了首先将999代码包含在字典中之外,我不确定如何执行此操作.当涉及到一百多个代码并且其中只有少数几个不需要是999时,这令人沮丧.

解决方法:

使用地图和dict.get
dict.get允许您在键不存在的情况下传递认值.

df['ColNew'] = df['Col1'].map(lambda x: codes.get(x, 999))

df

  Col1 ColNew
0   02     06
1   03     07
2   02     06
3   02     06
4   04     08
5   88    999
6   77    999

这还将保留dtype.在这种情况下,这并不重要,因为列的dtype是object.

但是,如果它是int,则当NaN回来时,地图会将其变为float.通过使用认值,我们避免了类型转换.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐