首页 > 解决方案 > 将数据框值映射到列表的索引

问题描述

我已经使用此代码分解了我以前的数据框

df['name'], mapping = df['name'].factorize()

现在我正在尝试使用变量映射为我的新数据帧获取相同的分解值

映射

Index(['Ranny','Bob','Timmy','Lisa'],
  dtype='object')

我的新数据框

╔════════════════╗
║ Name    Apples ║
╠════════════════╣
║ Lisa      5    ║
║ Timmy     3    ║  
║ Lisa      2    ║
║ Bob       1    ║
╚════════════════╝

将列名映射到列表后我想要的数据框

╔════════════════╗
║ Name    Apples ║
╠════════════════╣
║ 3         5    ║
║ 2         3    ║  
║ 3         2    ║
║ 1         1    ║
╚════════════════╝

我不知道该怎么做。我尝试了一个循环,但是当数据集很大时它需要太多时间。有没有一种有效的方法来做到这一点?

标签: pythonpandasdataframemapping

解决方案


如果我理解正确,您可以pd.Index.get_Indexer在这里使用:

df2['Name'] = mapping.get_indexer(df2['Name'])
print(df)

   Name  Apples
0     3       5
1     2       3
2     3       2
3     1       1

推荐阅读