Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将数据帧列转换为数字的更好方法_Python_Pandas_Dataframe_Type Conversion - Fatal编程技术网

Python 将数据帧列转换为数字的更好方法

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

我有一个dataframe,其中的一些列包含object类型的数据,因为有一些时髦的数据条目,也就是a。或者别的什么

我已经能够通过识别对象列并执行以下操作来纠正此问题:

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'