如何在熊猫系列中映射字符串

时间:2020-03-25 14:57:21

标签: python pandas dataframe data-wrangling

对于map中的characters,有没有一种方法column Pandas

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

因此,我希望显示一些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']

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

如果您不想爆炸,请使用Apply。但是请记住,在大型数据帧上,爆炸方法可能比此方法快

测试数据框

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