使用循环将多个数据集保存到不同的变量

2024-09-25 20:24:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须加载7个数据集,并希望将每个数据集中的数据分配给单独的变量。我在下面加入了我的循环。现在,它可以工作了,但它将所有数据集作为7个索引加载到variable_name中,当我希望它根据variable_name列表中的名称分别输出每个变量时

dir = '/data/watkinson/Model_and_Inversion_Code/indiv_variables_output/'
file_name = ['mld_field','sp_field','lp_field','tmp_field','pz_field','sz_field','lz_field']
mld,sp,lp,temp,pz,sz,lz = [[],[],[],[],[],[],[]]
variable_name = [mld,sp,lp,temp,pz,sz,lz]
i=0
while i < 7:
     variable_name[i] = np.array(nc.Dataset(dir + file_name[i] + '.nc', 'r').variables[file_name[i]][:, :, :, :],dtype=float)
     i += 1

Tags: 数据namefielddirvariablesvariabletempsp
2条回答

假设我们有3个文件:

filename: abc.csv:

Name,Age,Sex
Joey,10,M
Kate,12,F
Mike,14,M
Jane,11,F
Abby,12,F

filename: xyz.csv:

City,State
San Francisco,CA
Chicago,IL
Buffalo,NY
Atlanta,GA
Miami,FL

filename:pqr.csv:

Company,Product
Tesla,Model X
Tesla,Model Y
Apple,MacBook Pro
Ford,Mustang

然后,您可以给出类似这样的内容,以将所有3个文件作为数据帧存储到列表中

import pandas as pd
files = ['abc.csv','xyz.csv','pqr.csv']
dfs = []
for f in files:
    dfs.append(pd.read_csv(f))
print (dfs)

其输出将为:

[   Name  Age Sex
0  Joey   10   M
1  Kate   12   F
2  Mike   14   M
3  Jane   11   F
4  Abby   12   F,             

            City State
0  San Francisco    CA
1        Chicago    IL
2        Buffalo    NY
3        Atlanta    GA
4          Miami    FL,   

  Company      Product
0   Tesla      Model X
1   Tesla      Model Y
2   Apple  MacBook Pro
3    Ford      Mustang]

在您的例子中,您可以只遍历file_name,而不需要索引值

file_name = ['mld_field','sp_field','lp_field','tmp_field','pz_field','sz_field','lz_field']

只需给出:

for file in file_name:
    variable_name.append(....)

在这里,您可以在append中提供pd.read\u csv(文件)

我相信您正在寻找enumerate,它将为您提供从0开始计算的i索引以及变量名

具有硬索引i

dir = '/data/watkinson/Model_and_Inversion_Code/indiv_variables_output/'
file_name = ['mld_field','sp_field','lp_field','tmp_field','pz_field','sz_field','lz_field']
variable_names = ['mld','sp','lp','temp','pz','sz','lz']
variable_data = {}
for i, name in enumerate(variable_names):
    variable_data[name] = np.array(nc.Dataset(dir + file_name[i] + '.nc', 'r').variables[file_name[i]][:, :, :, :],dtype=float)

您可以分别访问每个变量:

print(variable_data['mld'])
print(variable_data['sp'])
...

没有硬索引i

我尽量避免在可能的情况下使用硬索引。这里我们使用zip替换枚举:

dir = '/data/watkinson/Model_and_Inversion_Code/indiv_variables_output/'
file_name = ['mld_field','sp_field','lp_field','tmp_field','pz_field','sz_field','lz_field']
variable_names = ['mld','sp','lp','temp','pz','sz','lz']
variable_data = {}
for filename, name in zip(file_names, variable_names):
    variable_data[name] = np.array(nc.Dataset(dir + file_name + '.nc', 'r').variables[file_name][:, :, :, :],dtype=float)

相关问题 更多 >