我有一个键和值的字典.我想“映射”数据框列中的数字,其中原始列是键,新列是值.
但是,字典中未包含的任何值都应编码为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 举报,一经查实,本站将立刻删除。