我有一个函数,它依赖于一个字典来识别它需要读取的文件和它们所链接的变量名(在这种情况下是平均值)并将其作为现有 Dataframe 中的列返回。当文件不同时,这一切都很好用,但我有几个情况下,我有不同的变量链接到同一个文件。该函数计算一些zonal统计为一个Geopandas df。
有没有更有效的方法来读取文件?目前,函数多次读取同一个文件并计算相同的值,但将它们保存在不同的列名下。事实证明,就时间而言,这是非常低效的。
# The data dictionary has a structure like the one below. Sometimes there are 4-5 variables linked to the same file.
FILEPATH = {"variable_1": "path/commonfile.tif",
"variable_2": "path/commonfile.tif",
"variable_3": "path/commonfile.tif",
"variable_4": "path/otherfile1.tif",
"variable_5": "path/someotherfile1.tif"}
# my function is like the one below
for variable, filename in FILEPATH.items():
my_df.loc[:, f'{variable}'] = myfunction(df=my_df, file=f'{filename}', stats_list = ['mean'])
1条答案
按热度按时间l0oc07j21#
一种改进Python代码运行时的方法是在调用
myfunction
之前读取.tif
文件,并将其修改为期望表示文件路径的.tif
对象。这样,您可以读取每个文件一次,而不必一遍又一遍地重新读取它。这里有一个关于如何实现这一点的示例:
在上面的代码中,我们定义了一个名为
transform_filepaths
的新函数。该函数负责阅读FILEPATHS
中定义的每个不同文件一次,并生成一个Map变量名和加载对象的新字典。为了使用这个新生成的字典,您还必须修改myfunction
,以便它期望加载的对象,而不是包含文件位置的字符串。