lambda表达式不会改变pandas的数据帧的值

时间:2016-11-17 12:53:01

标签: python pandas dataframe lambda

如果当前值为“...”,我有以下函数将列'A'的值更改为np.NaN。但是,出于某种原因,一切都没有改变。

def findEmpty(row):
    row['A'] = np.NaN


energy[energy['A'] == '...'].apply(lambda x:findEmpty(x))

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:2)

Pandas apply会返回带有应用值的DataFrame。 试试这个:

energy = energy[energy['A'] == '...'].apply(lambda x:findEmpty(x))

答案 1 :(得分:1)

这是一个更有效的解决方案

energy.ix[(energy['A'] == '...'), 'A'] = np.NaN

请注意lambda函数是纯Python的。换句话说,当你这样做时,你基本上扔掉了Pandas中所有漂亮的C加速。如果使用大型数据集,请始终尝试避免循环和lambda函数(如果可能)

答案 2 :(得分:1)

熊猫有一个'替换''提高可读性的方法

energy.replace('...', np.NaN, inplace=True)