对于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']
答案 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