2016-11-02 98 views
-1

我有一個DataFrame,其中包含一些我將轉換爲整數的字符串值,以供將來計算。列df['Age']中的值有一些標記爲NaN值的錯誤。使用dropna函數,我丟失了整個行的一半以及其他列中的大量數據。如何在不更改主DataFrame的情況下僅選擇df['Age']中不是NaN值的進一步計算值。僅從列中刪除值pandas

df['Age'] = np.where(pd.to_numeric(df['Age'], 'coerce').notnull(), df['Age'], NaN) 
df = df.dropna(subset=['Age']) 
df['Age'] = df['Age'].astype(int) 
+3

你能提供你的數據框 –

+0

的樣本究竟怎麼想的NaN要處理? – BallpointBen

+0

你有沒有試過:'.dropna()'?...我不理解你對不起! – tumbleweed

回答

0

要選擇與年齡不空行:

df[df.Age.notnull()] 

或許你只想要年齡:

df[[df.Age.notnull()].Age 
+0

謝謝,第二個給出了預期的結果 – Sinchetru

0

df['Age']轉換爲數字後,使用另一個變量進行切片。

例如,假設你有一個income場:

another_df = df['income'][~ps.isnull(df['age'])] * 2 

,或者更一般地說:

another_df = df['income'][~ps.isnull(df['age'])].apply(lambda x: x*2) 

,你可以在apply通話

注意使用任何功能:您的原始數據幀df保持不變