2016-09-25 104 views
4

我有以下的數據幀,我想轉換數值列「B」爲整轉換浮到int和離開零點

a b  c 
0 1 NaN  3 
1 5 7200.0 20 
2 5 580.0 20 

下面的代碼拋出異常 「ValueError異常:無法轉換NA爲整型「

df['b'] = df['b'].astype(int) 

我該如何將浮點數轉換爲int並將空值保留原樣?

+0

請問爲什麼?看起來醜陋?整數數組不能有'NaN' – Jeon

+0

我得到你,所以我應該首先將NaN替換爲0,然後將列轉換爲int? – billboard

+0

如果你真的想,0,-1或你可以區分的東西 – Jeon

回答

2

np.NaN是浮點唯一的東西,所以它必須被刪除才能創建一個整數pd.Series。 Jeon的建議工作很棒如果0在df['b']中不是有效值。例如:

import pandas as pd 
import numpy as np 

df = pd.DataFrame({'a': [1, 5, 5], 'b': [np.NaN, 7200.0, 580.0], 'c': [3, 20, 20]}) 
print(df, '\n\n') 

df['b'] = np.nan_to_num(df['b']).astype(int) 

print(df) 

是否有有效0的,那麼你可以先用一些獨特的價值(例如,-999999999)全部更換,該轉換上面,然後用0替換這些獨特的價值觀。

無論哪種方式,你必須記住,你有0的地方有一次NaNs。在進行各種數值分析時(例如,平均值等),您需要小心過濾掉這些數據。