将数据框值映射到列表的索引

时间:2020-03-09 04:39:01

标签: python pandas dataframe mapping

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

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    ║
╚════════════════╝

我不确定该怎么做。我尝试进行循环,但是当数据集很大时会花费太多时间。有没有一种有效的方法可以做到这一点?

1 个答案:

答案 0 :(得分:3)

如果我理解正确,则可以在此处使用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