传递值列表以在Python中重新映射

时间:2018-12-01 13:22:04

标签: python pandas

我想知道是否有一种方法可以传递要在数据框中重新映射的值/相应值的列表。我使用的是数据集的截短版本,而不必一次一个地更新代码,我的数据中大约有30个不同的唯一QFundMaster变量。

 QFundMaster    NPS
0   3   1
1   5   2
2   10  3
3   23  9
4   26  1

我用于重新映射数据的代码如下:

df['Fund'] = df['QFundMaster'] \
.map({3: 'Fund1'\
  ,5: 'Fund2'\
  ,10: 'Fund3'\
  ,23: 'Fund4'\
  ,26: 'Fund5'})

代码工作得很好,但是经过了一种传递值/新值列表的方式,因此我不必一个接一个地编辑代码并提高效率。任何在正确方向上的帮助将不胜感激。谢谢!

print(df.Fund)
0    Fund1
1    Fund2
2    Fund3
3    Fund4
4    Fund5
Name: Fund, dtype: object

1 个答案:

答案 0 :(得分:1)

如果您有old_valuesnew_values的列表,则可以执行以下操作:

import pandas as pd

data = [[3, 1],
        [5, 2],
        [10, 3],
        [23, 9],
        [26, 1]]

df =pd.DataFrame(data=data, columns=['QFundMaster', 'NPS'])

old_values = [3, 5, 10, 23, 26]
new_values = ['Fund1', 'Fund2', 'Fund3', 'Fund4', 'Fund5']

df['Fund'] = df['QFundMaster'].map(dict(zip(old_values, new_values)))

print(df)

输出

   QFundMaster  NPS   Fund
0            3    1  Fund1
1            5    2  Fund2
2           10    3  Fund3
3           23    9  Fund4
4           26    1  Fund5