You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用pandas内置功能将DataFrame列值替换为对应索引

实现方案

首先将你现有的nameIndex转换为「地名-索引」的直接映射字典,再用pandas内置的映射方法批量替换列值即可,全程无需循环。

步骤1:构建映射字典

把nameIndex里的name和index一一对应,生成可直接用于查询的映射表:

import pandas as pd

# 你的原有代码部分
data = [['Iowa', 'New York', 1], ['New York' ,'San Jose', 1], ['San Jose' ,'Iowa', 1], ['Houston', 'San Jose', 1], ['Houston' ,'Arizona', 1]]
dataDf = pd.DataFrame(data, columns = ['Source', 'Target', 'value'])
nameIndex = {'name': ['Iowa', 'New York','San Jose', 'Houston','Arizona' ],
        'index': [0,1,2,3,4]}

# 构建映射字典,加str转换是为了匹配你预期输出的字符串类型索引,不需要可以去掉
name_map = {name: str(idx) for name, idx in zip(nameIndex['name'], nameIndex['index'])}

步骤2:批量替换列值

有两种常用实现方式,任选其一即可:

方式1:用map方法逐列映射

dataDf['Source'] = dataDf['Source'].map(name_map)
dataDf['Target'] = dataDf['Target'].map(name_map)

方式2:用replace方法一次性处理多列

dataDf[['Source', 'Target']] = dataDf[['Source', 'Target']].replace(name_map)

运行结果

处理后dataDf的Source和Target列就会和你预期输出完全一致:

SourceTargetvalue
0011
1121
2201
3321
4341

内容的提问来源于stack exchange,提问作者CrazyC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 03:57:00