首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python最快的方法来转换大数据集的dtype?

用Python最快的方法来转换大数据集的dtype?
EN

Stack Overflow用户
提问于 2017-05-22 15:39:31
回答 1查看 197关注 0票数 2

因此,我正在处理一个相对较大的数据集,我觉得将这些列转换为适当的dtype需要花费大量的时间。

到目前为止,我将applyto_datetimeto_numeric一起使用,如下所示:

代码语言:javascript
复制
df.iloc[:,[0,1,9]] = df.iloc[:,[0,1,9]].apply(pd.to_datetime, 
errors='coerce')
df.iloc[:,2:8] = df.iloc[:,2:8].apply(pd.to_numeric, errors='coerce')

我能把这些柱子转换,但花了20分钟。一定有更快的方法吗?

如果不是,我的唯一选择是减少数据集以进行数据探测,还是获得更快的计算机?

编辑:问题主要是由于使用to_datetime而没有格式化日期和时间。当我删除iloc并应用时,性能也有了改善,尽管它没有格式化日期和时间那么重要。

以下是每一种场景所需的时间:

  • 使用iloc不使用格式化需要1027.11 s才能运行。
  • 没有使用iloc的格式需要789.15 s才能运行。
  • 格式化的日期时间需要19.47秒才能运行

巨大的进步。这是在一个有2,049,280行数据集上进行的。谢谢史考特波士顿和迪戈亚!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-22 15:44:10

apply函数通常需要相当长的执行时间。基于列的操作更快,您可以这样做:

代码语言:javascript
复制
df['column0'] = pd.to_datetime(df['column0'], errors='coerce')

其他的列也是如此。

另外,如果您有列的特定格式,则可以尝试指定它以加快速度。

代码语言:javascript
复制
df['column0'] = pd.to_datetime(df['column0'], format=format, errors='coerce')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44116967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档