python-3.x - 根据另一列的编码和均匀分布创建新列
问题描述
我正在尝试向现有数据框添加一列。
假设我有这个数据框:
list_colors = [['black'], ["yellow"]]*4
df_colors = pd.DataFrame(List_colors, columns = ['color'])
它给出了下表:
颜色 |
---|
黑色的 |
黄色 |
黑色的 |
黄色 |
黑色的 |
黄色 |
黑色的 |
黄色 |
color_2
我想要的是基于该列随机但等量的值分配给另一列 ( ) color
。
例如,“黑色”可以分配给“红色”或“绿色”。我希望每次分配都会改变,所以随机,但“红色”和“绿色”的数量应该相同(在这种情况下,2 个“红色”和 2 个“绿色”)。与“黄色”相同,但颜色不同(例如,“紫色”和“粉红色”)。
所以像:
颜色 | 颜色_2 |
---|---|
黑色的 | 绿色 |
黄色 | 紫色的 |
黑色的 | 红色的 |
黄色 | 粉色的 |
黑色的 | 红色的 |
黄色 | 粉色的 |
黑色的 | 绿色 |
黄色 | 紫色的 |
我怎样才能做到这一点?
解决方案
您可以设置一个dict
包含从源颜色到可能目标颜色列表的映射,然后将每个目标颜色映射到以下适当列表中的随机值dict
:
replacements = {
'black': ['red', 'green'],
'yellow': ['pink', 'purple'],
}
df['color_2'] = df['color'].transform(lambda x: np.random.choice(replacements[x]))
推荐阅读
- android - React Native Android TV - 防止可触摸元素或整个部分成为焦点
- ios - 如何在模拟器(ios)颤振中添加权限弹出以访问相机
- python - Python Numpy 根据 2-D 数组的值将值分配给 3-D 数组
- laravel - 使用同步更新关系时触发特征模型
- bash - 根据使用的 shell 有条件地向前移动
- ihttpmodule - 这里空的 dispose() 有什么用,我们可以删除 dispose() 吗?
- pywinauto - 在转换到某个屏幕后,我收到所有元素的元素未找到错误。请帮助找到解决方案。(pywinauto)
- swift - 键盘打开时如何避免应用缩放?
- c# - Unity-加载 - 解锁关卡并检查是否存在下一个关卡
- php - 如果第一次搜索没有返回结果,则在 SQL 中再次搜索另一列