如果当前值为'...',我有以下函数可将列'A'的值更改为np.NaN。但是,由于某种原因,没有任何变化。lambda表达式不会更改pandas数据帧的值
def findEmpty(row):
row['A'] = np.NaN
energy[energy['A'] == '...'].apply(lambda x:findEmpty(x))
有人能帮忙吗?
如果当前值为'...',我有以下函数可将列'A'的值更改为np.NaN。但是,由于某种原因,没有任何变化。lambda表达式不会更改pandas数据帧的值
def findEmpty(row):
row['A'] = np.NaN
energy[energy['A'] == '...'].apply(lambda x:findEmpty(x))
有人能帮忙吗?
这里是一个更有效的解决方案
energy.ix[(energy['A'] == '...'), 'A'] = np.NaN
注意lambda函数是纯Python。换句话说,当你这样做的时候,你基本上会抛弃熊猫的所有不错的C速度。如果使用大型数据集,总是尽量避免循环和lambda函数(如果可能)
熊猫apply
与应用价值返回DataFrame
。 试试这个:
energy = energy[energy['A'] == '...'].apply(lambda x:findEmpty(x))
大熊猫有这将提高可读性
energy.replace('...', np.NaN, inplace=True)
你为什么不使用fillna一个“替代”的方法? http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.fillna.html – anshanno
我正在学习Python,我想知道如何在这种情况下使用lambda。 @anshanno – renakre
你可以发布样本数据吗? – anshanno