假设我有一本字典:
dict = {"1" : "A", "2" : "B" , "3" : "C"}
和数据帧
df = pd.DataFrame()
df["ID"] = pd.Series(["A","B","C"])
df["Desc"] = pd.Series(["Fruits","Vegs","Meat"])
数据帧将是这样的:
如何将替换在列值df["ID"]
与字典键,这样我有1,2,3
在df["ID"]
代替A,B,C
?
假设我有一本字典:
dict = {"1" : "A", "2" : "B" , "3" : "C"}
和数据帧
df = pd.DataFrame()
df["ID"] = pd.Series(["A","B","C"])
df["Desc"] = pd.Series(["Fruits","Vegs","Meat"])
数据帧将是这样的:
如何将替换在列值df["ID"]
与字典键,这样我有1,2,3
在df["ID"]
代替A,B,C
?
首先创建一个逆映射:
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
,因为已经有该名称的内置。
或者你也可以立足于大熊猫。
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
另一种方式做,这将是:
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