python - Pandas 映射语法
问题描述
这种映射的“熊猫”语法是什么?
colors = ["red", "black"]
[colors[ind] for ind in [0, 1, 0, 0, 1, 0, 1]]
输出为
['red', 'black', 'red', 'red', 'black', 'red', 'black']
解决方案
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
如果所有索引匹配(这意味着列的最大值等于或与 list 的长度相同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
推荐阅读
- php - XML 文件中的更改不会反映在 HTML 页面中
- c# - 当在同一个 ViewCell 中点击编辑器时,为什么我的 Picker 的 Focused+Unfocused 事件会触发?
- javascript - HTML 表单未在 Safari 和 iOS Safari 上提交
- ruby-on-rails - 学习足够的 Rails -- 非管理员用户无法通过 log_in_as 登录
- python - Python 正则表达式匹配任何括在引号括号或括号中的内容
- angular - 以角度显示活动选项卡
- c++ - 在 .cpp 文件之间传递全局字符串变量?
- nestjs - Typeorm 不使用 ormconfig.json 文件
- api - 调用api时ProxyTable在vuejs中不起作用
- c# - Azure ADB2C 自定义策略返回:“端点返回的元数据......无效。”