我花了一些时间谷歌搜索并没有找到答案,我的问题很简单:如何在Pandas dataframe中就地映射列?比如说,我有以下的数据框:
In [67]: frame = pd.DataFrame(np.random.randn(4, 3), columns=list('bde'), index=['Utah', 'Ohio', 'Texas', 'Oregon'])
In [68]: frame
Out[68]:
b d e
Utah -1.240032 1.586191 -1.272617
Ohio -0.161516 -2.169133 0.223268
Texas -1.921675 0.246167 -0.744242
Oregon 0.371843 2.346133 2.083234
我想把b列中的每个值都加1。我知道可以这样做:
In [69]: frame['b'] = frame['b'].map(lambda x: x + 1)
或者像这样 - 就我所知,在Series
的上下文中,map
和apply
之间没有区别(除了map
还可以接受dict
或Series
)- 如果我错了,请纠正我:
In [71]: frame['b'] = frame['b'].apply(lambda x: x + 1)
但是我不喜欢两次指定 'b'
。相反,我想要做像这样的事情:
frame['b'].map(lambda x: x + 1, inplace=True)
可能吗?
map
- 不,这是不可能的。 - jezrael