【问题标题】:to_csv takes too much time to complete for xml objectto_csv 花费太多时间来完成 xml 对象
【发布时间】:2020-12-29 14:34:22
【问题描述】:

我有一个需要写入文件的 xml 对象。我看到这需要 1 个多小时才能完成 10,000 条记录。我尝试使用df_merge['xml'] = df_merge['xml'].astype(str) 进行转换。仍然花费的时间相似,即超过 1 小时,只是 astype(str) 需要更多时间。因此,无论是哪种情况,完成to_csv 都需要 1 个多小时。 那么,我可以知道如何快速将大型 xml 对象写入文件吗? 10000 个 xml 的大小约为 600 MB。

df_merge.to_csv(settings.OUTPUT_XML, encoding='utf-8', index=False,
                columns=['xml'])

后来我尝试使用np.savetxt,这也需要类似的时间。

import numpy as np
np.savetxt('output_xml.txt', df_merge['xml'], encoding='utf-8', fmt="%s")

【问题讨论】:

    标签: python-3.x pandas


    【解决方案1】:

    您可以考虑使用serialization。一个很好的库是joblib,或其他常见的序列化工具,如pickle

    A good Stack Overflow post outlining the differences and when to use each is here

    在您的情况下,您可能能够序列化您的对象,并且可以使用下面的一些示例代码在更长的时间内完成:

    # Import joblib's dump function
    from joblib import dump
    
    # For speed, keep compression = 0
    dump(df_merge, 'df_merge.joblib')
    
    # For smaller file size, you can increase compression, though it will slow your write time
    # dump(df_merge, 'df_merge.joblib', compress=9)
    

    然后您可以使用joblib 加载文件,如下所示:

    # Import joblib's load function
    from joblib import load
    
    # For speed, keep compression = 0
    # Note, if you used compress=n, then it will take longer to load
    df_merge = load('df_merge.joblib')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-04
      相关资源
      最近更新 更多