如何在Python中就地替换DataFrame列值为对应数组元素?
就地替换Pandas DataFrame数字列为对应单词的简洁方案
已知你的DataFrame中color列是1-5的整数,且有对应单词数组colors,以下是两种最简就地替换方案:
方案一:利用replace方法(显式就地修改)
直接生成数字到单词的映射字典,调用replace并设置inplace=True完成就地修改:
df['color'].replace(dict(zip(range(1, 6), colors)), inplace=True)
原理:dict(zip(range(1,6), colors))生成{1: 'blue', 2: 'yellow', 3: 'red', 4: 'white', 5: 'black'}的映射字典,replace方法会将列中匹配的数字替换为对应单词,inplace=True确保直接修改原DataFrame。
方案二:数组索引直接赋值(更简洁)
利用数字与数组索引的偏移关系(数字=索引+1),直接取对应单词赋值给原列:
df['color'] = [colors[x-1] for x in df['color']]
如果处理大数据集,可使用向量化操作提升效率:
df['color'] = colors[df['color'].sub(1).to_numpy()]
原理:将每个数字减1得到数组的有效索引,直接提取对应单词并覆盖原列,同样是就地修改原DataFrame。
验证结果
执行上述任一方案后,你的DataFrame会变为:
code color 0 A white 1 B blue 2 C yellow 3 D black 4 E blue
内容的提问来源于stack exchange,提问作者Dario de Judicibus
相关产品推荐
相关产品推荐

