如何关联宝可梦数据集的Path列与Name列 匹配对应宝可梦图片路径
宝可梦路径与名称匹配问题解决方法
现有数据集如下:
你的代码存在以下几处问题:
- 缩进错误:
split_path=i.split('/')行没有缩进到for循环体内,不会随循环执行 - 比对逻辑错误:遍历所有路径时仅和第一行的宝可梦名称
pok['Name'][0]比对,无法匹配其他行的名称对应路径 - 赋值符号误用:
pok['new_path'] == i用了逻辑判断符号==,不会执行赋值操作,赋值需要使用= - 整列赋值错误:直接对
pok['new_path']赋值会覆盖整列数据,无法实现行一一对应
修复后的实现方法
方法1:循环遍历(适合小数据集)
for idx, row in pok.iterrows(): split_path = row['Paths'].split('/') # 可打印split_path确认宝可梦名称所在的索引位置,再调整取值 path_poke_name = split_path[5] if path_poke_name == row['Name']: pok.loc[idx, 'new_path'] = row['Paths']
方法2:pandas向量化操作(效率更高,适合大数据集)
# 提取路径中的宝可梦名称生成临时列 pok['path_name'] = pok['Paths'].str.split('/').str[5] # 匹配名称一致的行,赋值对应路径 pok['new_path'] = pok.loc[pok['path_name'] == pok['Name'], 'Paths'] # 可选:删除临时辅助列 pok.drop('path_name', axis=1, inplace=True)
注意:如果路径拆分后宝可梦名称不在索引5的位置,可以先打印单条路径的拆分结果确认实际索引,再调整代码中的取值即可。
内容的提问来源于stack exchange,提问作者INGl0R1AM0R1
相关产品推荐
相关产品推荐

