我想知道是否有一种方法可以传递要在数据框中重新映射的值/相应值的列表。我使用的是数据集的截短版本,而不必一次一个地更新代码,我的数据中大约有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
答案 0 :(得分:1)
如果您有old_values
和new_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