我有一个数据框,需要将列重新映射到不同的值。对于某些映射不明确的值,每次遇到要映射的值时,都应从列表中随机选择结果值
例如,应按以下方式重新映射列中的值:
如果有两行带有2
,则每次都应进行随机抽取,以确定该值是否应映射到b
或c
以下是一些示例数据:
import pandas as pd
df = pd.DataFrame({"col1": [1, 2, 3, 4, 5, 6, 7, 8], "col2": [2, 2, 2, 3, 1, 2, 2, 1]})
我已经尝试使用映射字典使用^{
choice_list = ["b", "c"]
map_dict = {1: "a", 2: random.choice(choice_list), 3: "d"}
df["remap"] = df.col2.map(map_dict)
我发现在值2
的重新映射中,总是从所有行的choice_list
中选择一个值,例如所有b
:
col1 col2 remap
0 1 2 b
1 2 2 b
2 3 2 b
3 4 3 d
4 5 1 a
5 6 2 b
6 7 2 b
7 8 1 a
当我使用^{
我的预期结果是:
col1 col2 remap
0 1 2 b
1 2 2 c
2 3 2 b
3 4 3 d
4 5 1 a
5 6 2 b
6 7 2 c
7 8 1 a
通过执行以下操作,可以一次性选择不需要的替换值
如何修复它您需要在每次绘制地图时进行随机选择
为此更改
map_dict
格式并使用小包装:可能的产出:
大型数据集的快速替代方案
如果您有许多行(上万行),此替代方法将更快:
相关问题 更多 >
编程相关推荐