2016-11-17 20 views
0

如果当前值为'...',我有以下函数可将列'A'的值更改为np.NaN。但是,由于某种原因,没有任何变化。lambda表达式不会更改pandas数据帧的值

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


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

有人能帮忙吗?

+0

你为什么不使用fillna一个“替代”的方法? http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.fillna.html – anshanno

+0

我正在学习Python,我想知道如何在这种情况下使用lambda。 @anshanno – renakre

+0

你可以发布样本数据吗? – anshanno

回答

1

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

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

注意lambda函数是纯Python。换句话说,当你这样做的时候,你基本上会抛弃熊猫的所有不错的C速度。如果使用大型数据集,总是尽量避免循环和lambda函数(如果可能)

2

熊猫apply与应用价值返回DataFrame。 试试这个:

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

大熊猫有这将提高可读性

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