将大熊猫数据框列转换为数字的更好方法

问题描述:

由于一些时髦的数据条目(又名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

Convert_objects已弃用。改用它。 您可以添加参数errors ='coerce'来将错误的非数值转换为NaN。

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

该函数将应用于整个DataFrame。可以转换为数字类型的列将被转换,而不能(例如,它们包含非数字字符串或日期)的列将被单独保留。

+0

这给了我:值错误:('无法解析字符串“。”在位置。 ..) – Sveinn

+0

查看编辑 – Vaishali

+0

我早些时候尝试过。我得到'TypeError:arg必须是一个列表,元组,一维数组或者系列' – Sveinn

如果你有一个简单的数据帧:

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来代替“古​​怪”数据