如何用字典键替换数据框列值?

时间:2017-08-20 22:54:03

标签: python pandas dataframe replace

假设我有一本字典:

dict = {"1" : "A", "2" : "B" , "3" : "C"}

和数据框

df = pd.DataFrame()
df["ID"] = pd.Series(["A","B","C"])
df["Desc"] = pd.Series(["Fruits","Vegs","Meat"])

数据框如下所示:

enter image description here

如何使用字典键替换列df["ID"]中的值,以便1,2,3中的df["ID"]代替A,B,C

3 个答案:

答案 0 :(得分:2)

首先创建一个反向映射:

In [363]: dict2 = {v : k for k, v in dict_.items()}

这里假设您的价值观是独一无二的。现在您可以使用pd.Series.replace

In [367]: df.ID = df.ID.replace(dict2); df
Out[367]: 
  ID    Desc
0  1  Fruits
1  2    Vegs
2  3    Meat

pd.Series.map的替代解决方案:

In [380]: df.ID = df.ID.map(dict2); df
Out[380]: 
  ID    Desc
0  1  Fruits
1  2    Vegs
2  3    Meat

此外,我建议您使用与dict不同的名称,因为已经有一个内置名称。

答案 1 :(得分:1)

或者你可以只以熊猫为基础。

df.ID=df.ID.map((pd.DataFrame(data=d,index=['Value',]).T.reset_index().set_index('Value'))['index'])

Out[23]: 
  ID    Desc
0  1  Fruits
1  2    Vegs
2  3    Meat

答案 2 :(得分:0)

另一种方法是:

dict1 = pd.DataFrame(dict.items())
dict1.columns = ['ID_1',"ID"]
merge = pd.merge(df,dict1)
del merge['ID']
merge = merge.rename(columns={'ID_1': 'ID'})

    Desc    ID
0   Fruits  1
1   Vegs    2
2   Meat    3