Pandas“.convert_objects(convert_numeric=True)”已弃用

2024-04-28 03:33:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码中有一行代码将我的数据转换为数字。。。

data["S1Q2I"] = data["S1Q2I"].convert_objects(convert_numeric=True)

问题是,现在新的pandas发行版(0.17.0)说这个函数已经被弃用了。。 这是错误:

FutureWarning: convert_objects is deprecated.  
Use the data-type specific converters pd.to_datetime, 
pd.to_timedelta and pd.to_numeric. 
data["S3BD5Q2A"] = data["S3BD5Q2A"].convert_objects(convert_numeric=True)

所以,我去了新的文档,我找不到任何关于如何使用新函数转换我的数据的例子。。。

它只说:

"DataFrame.convert_objects has been deprecated in favor of type-specific functions pd.to_datetime, pd.to_timestamp and pd.to_numeric (new in 0.17.0) (GH11133)."

任何帮助都很好!


Tags: to数据函数代码trueconvertdatadatetime
3条回答

正如@EvanWright在评论中所解释的

data['S1Q2I'] = pd.to_numeric(data['S1Q2I'])

现在是转换类型的首选方式。有关更改的详细说明,请参见github PRGH11133

您可以使用apply as donehere进行替换。例如:

>>> import pandas as pd
>>> a = pd.DataFrame([{"letter":"a", "number":"1"},{"letter":"b", "number":"2"}])
>>> a.dtypes
letter    object
number    object
dtype: object
>>> b = a.apply(pd.to_numeric, errors="ignore")
>>> b.dtypes
letter    object
number     int64
dtype: object
>>> 

但有两个方面很糟糕:

  1. 必须使用apply而不是非本机dataframe方法
  2. 您必须复制到另一个数据帧--无法就地完成。太多的东西可以用来处理“大数据”了

我真的不喜欢熊猫要去的方向。我很少使用R data.table,但到目前为止它似乎更好。

我认为对于一个竞争性的数据分析框架来说,具有本地、就地类型转换的数据表是非常基本的。

这取决于熊猫的哪个版本。。。。。。 如果你有熊猫版的0.18.0 这种类型可以。。。。。。。。

df['col name'] = df['col name'].apply(pd.to_numeric, errors='coerce') 

其他版本。。。。。。。。

df['col name']=df.col name .astype(float)

相关问题 更多 >