相关疑难解决方法(0)

使用dict重新映射pandas列中的值

我有一个字典,看起来像这样: 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制作列的链接,反之亦然: - /

python dictionary remap pandas

260
推荐指数
6
解决办法
21万
查看次数

传递字典时映射vs applymap

我认为我很了解地图与应用地图,但我遇到了问题(如果有兴趣,请参阅此处了解更多背景信息).

一个简单的例子:

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)

python pandas

8
推荐指数
1
解决办法
2438
查看次数

标签 统计

pandas ×2

python ×2

dictionary ×1

remap ×1