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

如何使用字典转换Python DataFrame指定列的数值?

Pandas 用字典替换DataFrame指定列的数值

你可以用Pandas的replace()或者map()方法实现这个需求,两种方法各有适用场景:

方法1:使用replace()(推荐,保留未匹配值)

replace()会替换字典中匹配到的值,未在字典中的值会保持原样,适合需要部分替换的场景。直接对目标列调用该方法,加上inplace=True可以直接修改原DataFrame:

import pandas as pd

df = pd.DataFrame([[1, 1, 'A'], [2, 2, 'B'], [3, 3, 'C']], index=['I_1', 'I_2', 'I_3'], columns=['C_1', 'C_2', 'C_3'])
conv = {'A':'D', 'B':'E', 'C':'F'}

# 直接修改原列
df['C_3'].replace(conv, inplace=True)

print(df)

输出结果:

C_1  C_2 C_3
I_1    1    1   D
I_2    2    2   E
I_3    3    3   F

如果不想修改原DataFrame,可以赋值给新列或者重新赋值:

# 生成新列
df['C_3_new'] = df['C_3'].replace(conv)

方法2:使用map()(严格匹配,未匹配值转为NaN)

map()会严格按照字典映射替换,不在字典中的值会被转为NaN,适合需要确保所有值都在映射字典里的场景:

import pandas as pd

df = pd.DataFrame([[1, 1, 'A'], [2, 2, 'B'], [3, 3, 'C']], index=['I_1', 'I_2', 'I_3'], columns=['C_1', 'C_2', 'C_3'])
conv = {'A':'D', 'B':'E', 'C':'F'}

# 替换并赋值回原列
df['C_3'] = df['C_3'].map(conv)

print(df)

输出结果和上面一致,但如果你的列里有不在conv字典中的值,比如'X',map()会把它变成NaN,而replace()会保留'X'。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:15:16