Python 将数据帧列转换为数字的更好方法
我有一个dataframe,其中的一些列包含object类型的数据,因为有一些时髦的数据条目,也就是a。或者别的什么 我已经能够通过识别对象列并执行以下操作来纠正此问题:Python 将数据帧列转换为数字的更好方法,python,pandas,dataframe,type-conversion,Python,Pandas,Dataframe,Type Conversion,我有一个dataframe,其中的一些列包含object类型的数据,因为有一些时髦的数据条目,也就是a。或者别的什么 我已经能够通过识别对象列并执行以下操作来纠正此问题: obj_cols = df.loc[:, df.dtypes == object] conv_cols = obj_cols.convert_objects(convert_numeric='force') 这工作正常,允许我运行所需的回归,但会产生以下错误: FutureWarning: convert_objects i
obj_cols = df.loc[:, df.dtypes == object]
conv_cols = obj_cols.convert_objects(convert_numeric='force')
这工作正常,允许我运行所需的回归,但会产生以下错误:
FutureWarning: convert_objects is deprecated.
是否有更好的方法来避免错误?我还尝试构造lambda函数,但没有成功。不推荐使用Convert\u对象。用这个代替。 您可以添加参数errors='concurve'将错误的非数值转换为NaN
conv_cols = obj_cols.apply(pd.to_numeric, errors = 'coerce')
该函数将应用于整个数据帧。可以转换为数字类型的列将被转换,而不能转换的列(例如包含非数字字符串或日期的列)将被单独保留。不推荐使用Convert\u对象。用这个代替。 您可以添加参数errors='concurve'将错误的非数值转换为NaN
conv_cols = obj_cols.apply(pd.to_numeric, errors = 'coerce')
该函数将应用于整个数据帧。可以转换为数字类型的列将被转换,而不能转换的列(例如,它们包含非数字字符串或日期)将被单独保留。如果您有一个示例数据框:
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\u numeric来实现
cols = ['Jan', 'Feb', 'Mar']
df[cols] = df[cols].apply(pd.to_numeric, errors='coerce', axis=1)
如果您有一个示例数据框,则新数据框将使用NaN替换“古怪”数据:
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\u numeric来实现
cols = ['Jan', 'Feb', 'Mar']
df[cols] = df[cols].apply(pd.to_numeric, errors='coerce', axis=1)
您的新数据框将使用NaN替换“古怪”数据您可以使用astypeint或pd.to\u Numeric您可以使用astypeint或pd.to\u Numeric这给了我:值错误:“无法解析字符串。”。在位置上…我之前试过了。我得到TypeError:arg必须是一个列表、元组、1-d数组或序列,因为obj_cols是一个数据框架。使用apply的答案应该与参数errors='compare'I crease errors='compare'一起工作,将所有非数字字符串转换为NaN,因此它应该是errors='ignore'这给了我:Value Error:'无法解析字符串。在位置上…我之前试过了。I get TypeError:arg必须是列表、元组、1-d数组或序列,因为obj_cols是一个DataFrame。使用apply的答案应该与参数errors='convere'一起工作,我相信errors='convere'将所有非数字字符串转换为NaN,因此它应该是errors='ignore'