如果当前值为“...”,我有以下函数将列'A'的值更改为np.NaN。但是,出于某种原因,一切都没有改变。
def findEmpty(row):
row['A'] = np.NaN
energy[energy['A'] == '...'].apply(lambda x:findEmpty(x))
有人可以帮忙吗?
答案 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)