python - Pandas :映射到新列,不包括一些代码

标签 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 以外的任何代码时,这令人沮丧。

最佳答案

使用 mapdict.get
dict.get允许您在 key 不存在的情况下传递默认值。

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

这也将保留 dtypes。在这种情况下,这无关紧要,因为该列的 dtypeobject

但是,如果它是int,当NaN返回时,map会把它变成float。通过使用默认值,我们避免了类型转换。

关于python - Pandas :映射到新列,不包括一些代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43395390/

相关文章:

python - 如何在pandas python中转换列中的行并执行操作

python - pickle 在不同的范围内如何工作?

python - 在字符串列表中查找模式

python - music21 是否包含音符转换计数器?

python - 唯一值的动态分配 - Python

python - 使用 python 计算列中单词出现的次数

python - Pandas:根据除一行之外的其他多级列对最里面的列进行分组排序

python - 无法让 psycopg2 工作,但安装正确。苹果系统

python - 如何获得 session 来执行交易?

Python - 逆透视数据