首页 > 解决方案 > 更有效地替换 Pandas Dataframe 中多列的值

问题描述

我有一个 DataFrame, df,我想在其中替换几个值

用户1 用户2 用户3
苹果 苹果
芒果 内存 芒果

而不是做


df['user1'] = df['user1'].replace(['apple','mango'], [0, 1])
df['user3'] = df['user1'].replace(['apple','mango'], [0, 1])
df['user2'] = df['user2'].replace(['yoo','ram'], [2, 3])


得到最终的DataFrame

用户1 用户2 用户3
0 2 0
1 3 1

有什么方法可以让上面的代码更高效,这样我就可以用一行代码来改变 apple、mango、yoo 和 ram 的值?

标签: pythonpandasdataframe

解决方案


如果需要按每列的唯一值设置范围,请使用:

cols = ['user1','user2','user3']
s = df[cols].unstack()
df[cols] = pd.Series(pd.factorize(s)[0], index=s.index).unstack(0)
print (df)
   user1  user2  user3
0      0      2      0
1      1      3      1

推荐阅读