2017-04-16 176 views
1

由於一些時髦的數據條目(又名a或whatnot),我有一個數據框,其中包含一些包含對象類型數據的列。將大熊貓數據框列轉換爲數字的更好方法

我已經能夠通過識別對象列,然後做更正此此:

obj_cols = df.loc[:, df.dtypes == object] 
conv_cols = obj_cols.convert_objects(convert_numeric='force') 

這工作得很好,讓我跑,我需要回歸,但生成該錯誤:

FutureWarning: convert_objects is deprecated. 

有沒有更好的方法來做到這一點,以避免錯誤?我也嘗試構建一個lambda函數,但沒有奏效。

+0

您可以使用astype(int)或pd.to_numeric – Vaishali

回答

0

Convert_objects已棄用。改用它。 您可以添加參數errors ='coerce'來將錯誤的非數值轉換爲NaN。

conv_cols = obj_cols.apply(pd.to_numeric, errors = 'coerce') 

該函數將應用於整個DataFrame。可以轉換爲數字類型的列將被轉換,而不能(例如,它們包含非數字字符串或日期)的列將被單獨保留。

+0

這給了我:值錯誤:('無法解析字符串「。」在位置。 ..) – Sveinn

+0

查看編輯 – Vaishali

+0

我早些時候嘗試過。我得到'TypeError:arg必須是一個列表,元組,一維數組或者系列' – Sveinn

0

如果你有一個簡單的數據幀:

sales = [{'account': 'Jones LLC', 'Jan': 150, 'Feb': 'f', 'Mar': 140}, 
    {'account': 'Alpha Co', 'Jan': 'e', 'Feb': 210, 'Mar': 215}, 
    {'account': 'Blue Inc', 'Jan': 50, 'Feb': 90, 'Mar': 'g' }] 
df = pd.DataFrame(sales) 

,你想擺脫列中字符串應該是數字的,你可以用pd.to_numeric

cols = ['Jan', 'Feb', 'Mar'] 
df[cols] = df[cols].apply(pd.to_numeric, errors='coerce', axis=1) 
做到這一點

您的新數據框將有NaN來代替「古​​怪」數據

相關問題