所以,我正在处理一个相对较大的数据集,我觉得将这些列转换为适当的dtypes需要花费很多时间。
到目前为止,我正在使用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行的数据集上。谢谢@ScottBoston和@DiegoAgher!
答案 0 :(得分:0)
apply
函数通常需要相当长的执行时间。
基于列的操作更快,您可以这样做:
df['column0'] = pd.to_datetime(df['column0'], errors='coerce')
依此类推其他专栏。
此外,如果您有一个特定的列格式,您可以尝试指定它以加快速度。
df['column0'] = pd.to_datetime(df['column0'], format=format, errors='coerce')