values = [1,2,3,2,3,1]
colors = ['r','g','b']
expected_output = ['r', 'g', 'b', 'g', 'b', 'r'] # how to create this in pandas?

df = pd.DataFrame({'values': values})
df['colors'] = expected_output

即,我想在我的数据框中创建一个新列,其中 colored颜色 是基于现有列中的值 Select 的.我记得在XARRAY中用矢量化索引技巧做到了这一点,但我记不清同样的事情在Pandas 身上是否可能发生……感觉这应该是一个基本的索引任务吗?

编辑:目前的答案是一个很好的开始,谢谢!不过,他们有点太过利用"值"的数字本质.我宁愿一些通用的,也可以工作,如果说

values = ['a', 'b', 'c', 'b', 'c', 'a']

我想" map "的方法可能还有效.

推荐答案

Code

使用NumPy索引

import numpy as np
DF['colors'] = np.array(colors)[DF['values'] - 1]

DF

   values color
0       1     r
1       2     g
2       3     b
3       2     g
4       3     b
5       1     r

如果你想只用Pandas 来解决这个问题,那就用map函数吧.(@Onyambu comments )

m = dict(enumerate(colors, 1))
DF['colors'] = DF['values'].map(m)

Python相关问答推荐

Django mysql图标不适用于小 case

难以在Manim中正确定位对象

ModuleNotFound错误:没有名为flags.State的模块; flags不是包

pandas滚动和窗口中有效观察的最大数量

用Python解密Java加密文件

Python中绕y轴曲线的旋转

当独立的网络调用不应该互相阻塞时,'

在Python argparse包中添加formatter_class MetavarTypeHelpFormatter时, - help不再工作""""

不允许访问非IPM文件夹

如何保持服务器发送的事件连接活动?

为什么Django管理页面和我的页面的其他CSS文件和图片都找不到?'

Python—压缩叶 map html作为邮箱附件并通过sendgrid发送

Pythonquests.get(Url)返回Colab中的空内容

如何在PYTHON中向单元测试S Side_Effect发送额外参数?

在聚合中使用python-polars时如何计算模式

使用Scikit的ValueError-了解

如何在不遇到IndexError的情况下将基数10的整数转换为基数80?

使用Django标签显示信息

Pandas:新列,从列表中采样,基于列值

将多行数据循环到嵌套框架中的单行