如何使用字典转换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
相关产品推荐
相关产品推荐

