【问题标题】:Iterate a script over multiple folders in master folder在主文件夹中的多个文件夹上迭代脚本
【发布时间】:2020-03-03 12:34:32
【问题描述】:

我编写了一个脚本,从多个 csv 文件中提取列(位于名为 SIM1 的文件夹中)并将它们保存在 txt 文件中。现在,我需要在多个文件夹(SIM2、SIM3、SIM4、...)上迭代这个脚本。所有这些 SIM 文件夹都在一个主文件夹中。如果我能在迭代方面获得帮助,我会非常感激? (我使用的是 Python 3.7)

    import os
    import pandas as pd
    import numpy as np
    import csv

    os.chdir(r'D:\GRIDS\SIM1')

    ppt = pd.read_csv("ppt.csv")
    et = pd.read_csv("et.csv")
    tmx = pd.read_csv("tmax.csv")
    weather_SIM = pd.read_csv("Weather_SIM1.csv")

    big_frame = pd.concat([weather_SIM, ppt,et,tmx], axis=1)

    np.savetxt('Weather.txt', big_frame, fmt= "%0.0f\t %0.0f\t %0.0f\t %0.1f\t %0.1f\t %0.1f", header='Year\t Month\t Date\t ppt\t et\t tmax', comments='')

【问题讨论】:

  • 添加路径而不是 chdiring

标签: python python-3.x pandas numpy csv


【解决方案1】:

试试这个

import os
import pandas as pd
import numpy as np
import csv

master_path = '<master dir path>'
subfolders = list(filter(lambda x: os.path.isdir(os.path.join(master_path, x)), os.listdir(master_path)))
for folder in subfolders:

    ppt = pd.read_csv(f"{master_path}/{folder}/ppt.csv")
    et = pd.read_csv(f"{master_path}/{folder}/et.csv")
    tmx = pd.read_csv(f"{master_path}/{folder}/tmax.csv")
    weather_SIM = pd.read_csv(f"{master_path}/{folder}/Weather_SIM1.csv")

    big_frame = pd.concat([weather_SIM, ppt,et,tmx], axis=1)

    np.savetxt(f"{master_path}/{folder}/Weather.txt", big_frame, fmt= "%0.0f\t %0.0f\t %0.0f\t %0.1f\t %0.1f\t %0.1f", header='Year\t Month\t Date\t ppt\t et\t tmax', comments='')

【讨论】:

  • 嗨拉吉斯,感谢您的帮助。这段代码运行良好。
  • 伟大的,快乐的编码
猜你喜欢
  • 1970-01-01
  • 2015-01-20
  • 1970-01-01
  • 1970-01-01
  • 2020-03-03
  • 2018-01-06
  • 1970-01-01
  • 1970-01-01
  • 2014-06-11
相关资源
最近更新 更多