2016-11-17 55 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)