熊猫映射Syntex

时间:2020-10-14 09:57:45

标签: python pandas

这种映射的“熊猫”语法是什么?

colors = ["red", "black"]
[colors[ind] for ind in [0, 1, 0, 0, 1, 0, 1]]

输出为

['red', 'black', 'red', 'red', 'black', 'red', 'black']

1 个答案:

答案 0 :(得分:1)

Series.mapenumerate创建的字典一起使用:

df = pd.DataFrame({'a':[0, 1, 0, 0, 1, 0, 1]})

colors = ["red", "black"]

df['b'] = df['a'].map(dict(enumerate(colors)))
print (df)
   a      b
0  0    red
1  1  black
2  0    red
3  0    red
4  1  black
5  0    red
6  1  black

如果所有索引匹配(这意味着列的最大值等于或等于列表color的长度)是可行的,请使用numpy广播:

colors = ["red", "black"]

df['b'] = np.array(colors)[:, None][df['a'].to_numpy()]
print (df)
   a      b
0  0    red
1  1  black
2  0    red
3  0    red
4  1  black
5  0    red
6  1  black