这种映射的“熊猫”语法是什么?
colors = ["red", "black"]
[colors[ind] for ind in [0, 1, 0, 0, 1, 0, 1]]
输出为
['red', 'black', 'red', 'red', 'black', 'red', 'black']
答案 0 :(得分:1)
将Series.map
与enumerate
创建的字典一起使用:
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