我正在尝试替换列中现有值的列表。你知道吗
team ID ... win
0 1 ... 8
1 1 ... 4
2 3 ... 5
3 4 ... 2
4 5 ... 1
(团队ID可以重复并且不是唯一的)
我希望将团队ID从现有的列表中更改为团队名称
team_names = ['A', 'B', 'C', 'D']
我以前是这样做的:
df.name = df.name.replace({
1: 'A',
2: 'B',
3: 'C',
4: 'D'
})
然而,我现在面临的问题是,我想要映射的两个列表几乎是100个。所以我想知道是否有人能分享一个更快的方法?你知道吗
如果团队名称列表中每个团队名称的位置与团队id相对应,则可以执行以下操作:
用上面的dict理解替换手动词典:
此解决方案受此答案here的启发,可以根据您的问题进行调整。您可以使用
itertools.product()
和string.ascii_uppercase
来创建一个类似['A', 'B', 'C', ....., 'AA', 'AB', 'AC']
的字母列表,其长度与您的数据帧相同:收益率:
我看到,在我编写答案之后,您修改了输入数据帧,在
team ID
列中包含了非唯一值,因此对最后一个语句稍作修改将产生所需的结果(注意@Edgar R.Mondragón在他的答案中首先发布了这部分内容):收益率:
您可以
zip
这两个列表,然后将结果传递给dict:zip
的工作原理如下:编辑
如果列表中团队名称的顺序与id(
1-> "A", 2 -> "B", etc.
)相对应,则此操作有效:相关问题 更多 >
编程相关推荐