【问题标题】:How to store computed value of a variable from one Python script for reuse again and again in another Python script如何存储来自一个 Python 脚本的变量的计算值,以便在另一个 Python 脚本中一次又一次地重用
【发布时间】:2018-10-26 12:23:56
【问题描述】:

我有一个 python (3.7.0) 脚本文件,它包含 17,000 多个文本文件,然后逐行处理每个文件以将所需数据填充到 pandas 数据框中。所以代码如下是 Script1.py 文件:

def filePrpcesserFunc(file):
   data = open(file, 'r')
   for line in data.readlines():
      #Does some computing here to get var1, var2, var3
      #var1, var2, var3 are all integers
   return var1, var2, var3

if __name__ == '__main__':
   import glob2
   import pandas
   files = glob2.glob("*.txt")
   #There are more than 17,000 text files to be computed
   X = pandas.DataFrame()
   for file in files:
      rvar1, rvar2, rvar3 = fileProcesserFunc(file)
      X.loc[str(rvar1), str(rvar2)] = rvar3

现在上面的 python 脚本运行了超过 17,000 个文件来生成 pandas 数据帧 X,它只需要计算一次即可获取数据(并且计算非常昂贵)。我需要在另一个脚本文件(比如)Script2.py 中使用这个数据框来制作机器学习模型,因此为了测试我的模型,我需要一次又一次地访问 X,即我会需要一次又一次地运行 Script2.py。 任何人都可以提出任何建议吗?我会非常感谢你。

【问题讨论】:

    标签: python python-3.x pandas


    【解决方案1】:

    您可以使用内置的pickle 模块:

    script1.py:

    import pickle
    with open('dataframe.txt', 'wb') as f:
        pickle.dump(X, f)
    

    script2.py:

    import pickle
    X = pickle.load(open('dataframe.txt', 'rb'))
    

    您还可以在数据帧上加载内置的 to_pickle 方法:

    script1.py:

    X.to_pickle("./df.pkl")
    

    script2.py:

    import pandas as pd
    X = pd.read_pickle(¨./df.pkl¨)
    

    【讨论】:

      猜你喜欢
      • 2023-02-04
      • 1970-01-01
      • 2020-08-06
      • 2011-03-04
      • 2013-05-05
      • 2019-01-08
      • 2021-01-24
      • 1970-01-01
      • 2021-12-20
      相关资源
      最近更新 更多