因此,我正在处理一个相对较大的数据集,我觉得将这些列转换为适当的dtype需要花费大量的时间。
到目前为止,我将apply与to_datetime和to_numeric一起使用,如下所示:
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并应用时,性能也有了改善,尽管它没有格式化日期和时间那么重要。
以下是每一种场景所需的时间:
巨大的进步。这是在一个有2,049,280行数据集上进行的。谢谢史考特波士顿和迪戈亚!
发布于 2017-05-22 15:44:10
apply函数通常需要相当长的执行时间。基于列的操作更快,您可以这样做:
df['column0'] = pd.to_datetime(df['column0'], errors='coerce')其他的列也是如此。
另外,如果您有列的特定格式,则可以尝试指定它以加快速度。
df['column0'] = pd.to_datetime(df['column0'], format=format, errors='coerce')https://stackoverflow.com/questions/44116967
复制相似问题