-2

有没有办法map characters进入column.Pandas

例如,我想映射这样的列info{“1”:“US”,“2”:“DE”,“3”:“CA”,“4”:“AU”,“5”: “是”}

所以不是数字,我想要一些东西US和其他的东西来展示

编辑注意:我不想爆炸列,我想保持它们原样,只用字符串替换数字

0   ['3']
1   ['6']
2   ['3','4']
3   ['3','4','6']
4   ['3','4']
5   ['6']
6   ['6']
7   ['5']
8   ['5']
9   ['3', '4', '1']
4

2 回答 2

2

看起来你可以这样做:

d = {"1": "US", "2":"DE", "3":"CA", "4":"AU", "5":"BE"}
df.dropna().explode('my_col').my_col.map(d).groupby(level=0).agg(list).reindex(df.index)
于 2020-03-25T14:59:34.537 回答
1

如果您不想爆炸,请使用 apply。但请记住,在大型数据帧上,explode 方法可能比这快得多

测试数据框

>>> df
        test
0     [3, 4]
1        [6]
2        [3]
3  [3, 4, 6]

映射字典

>>> info =  {"1": "US", "2":"DE", "3":"CA", "4":"AU", "5":"BE"}

代码

>>> df.test.apply(lambda x: [info.get(str(i)) for i in x])
0          [CA, AU]
1            [None]
2              [CA]
3    [CA, AU, None]
Name: test, dtype: object
于 2020-03-25T15:16:27.013 回答