我有一个字典,看起来像这样: di = {1: "A", 2: "B"}
我想将它应用于数据帧的"col1"列,类似于:
col1 col2
0 w a
1 1 2
2 2 NaN
Run Code Online (Sandbox Code Playgroud)
要得到:
col1 col2
0 w a
1 A 2
2 B NaN
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能做到最好?出于某种原因谷歌搜索与此相关的术语只显示了如何从dicts制作列的链接,反之亦然: - /
我认为我很了解地图与应用地图,但我遇到了问题(如果有兴趣,请参阅此处了解更多背景信息).
一个简单的例子:
df = pd.DataFrame( [[1,2],[1,1]] )
dct = { 1:'python', 2:'gator' }
df[0].map( lambda x: x+90 )
df.applymap( lambda x: x+90 )
Run Code Online (Sandbox Code Playgroud)
这可以按预期工作 - 两者都是按元素运行,在一个系列上映射,在数据帧上运行applymap(在 btw中解释得非常好).
如果我使用字典而不是lambda,地图仍然可以正常工作:
df[0].map( dct )
0 python
1 python
Run Code Online (Sandbox Code Playgroud)
但不是applymap:
df.applymap( dct )
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-100-7872ff604851> in <module>()
----> 1 df.applymap( dct )
C:\Users\johne\AppData\Local\Continuum\Anaconda\lib\site-packages\pandas\core\frame.pyc in applymap(self, func)
3856 x = lib.map_infer(_values_from_object(x), f)
3857 return lib.map_infer(_values_from_object(x), func)
-> 3858 return self.apply(infer)
3859
3860 #----------------------------------------------------------------------
C:\Users\johne\AppData\Local\Continuum\Anaconda\lib\site-packages\pandas\core\frame.pyc in apply(self, …Run Code Online (Sandbox Code Playgroud)