在python中并行运行2个循环并连接输出



我有两个excel文件,其中包含行数、列数和表数相等的相互关联的数据集。我需要运行两个循环,以默认顺序读取两个excel文件的工作表,然后合并两个工作表的查找结果以创建堆叠图。

更详细地说:其目的是读取两张excel表格中的表格1,然后对原始数据进行插值,以创建叠加图,其中包括来自各表格数据的等高线图和使用两张表格数据的共同关系线图。由于两个excel文件中有多个表格,因此需要通过每个表格的平行循环进行操作。两个excel文件中的每张表格都将生成一个叠加图。

我尝试过以下方法,但没有成功:

import pandas as pd
import numpy as np
import scipy.interpolate
import matplotlib.pyplot as plt
loc1 = r'E:PythonField_280_IP18p2.xlsx'
load1 = pd.read_excel(loc1,sheet_name = None, header=None)
loc2 = r'E:PythonField_280_OP18p2.xlsx'
load2 = pd.read_excel(loc2,sheet_name = None, header=None)
nar=list(load.keys())
numR = len(nar)
#since numR is same for both
while numR in ax:

#first loop
for k in load1:
dem=load1[k]
x_c=np.array(dem[0])
y_c=np.array(dem[1])
z_c=np.array(dem[2])
X,Y=np.meshgrid(x_c,y_c)
rbf = scipy.interpolate.Rbf(x_c, y_c, z_c, function='linear')
Z=rbf(X,Y)

#second loop
for m in load2:
demo=load2[m]
x_co=np.array(demo[0])
y_co=np.array(demo[1])
z_co=np.array(demo[2])
Xo,Yo=np.meshgrid(x_co,y_co)
rbf = scipy.interpolate.Rbf(x_co, y_co, z_co, function='linear')
Zo=rbf(X,Y)


fig, ax = plt.subplots(nrows=3, ncols=1, sharex=True, 
figsize=(12*3,4*3))
#first stacked plot 
cline=ax[0].tricontour(X,Y,Z, color='k')
ax[0].clabel(cline, colors = 'k', fmt = '%2.1f', fontsize=7)       
con=ax[0].tricontourf(X,Y,Z, cmap='rainbow',extend='both')
plt.colorbar(con, shrink=.5)
ax[0].set_aspect('equal')

#second stacked plot
clineo=ax[1].tricontour(Xo,Yo,Zo, color='k')
ax[1].clabel(clineo, colors = 'k', fmt = '%2.1f', fontsize=7)       
cono=ax[1].tricontourf(Xo,Yo,Zo, cmap='rainbow',extend='both')
plt.colorbar(cono, shrink=.5)
ax[1].set_aspect('equal')

#third stacked plot
ax[2].plot(x_c,y_c)
ax[2].plot(x_co,y_co)

上面的代码创建了带有三个堆叠框的空白图。

在创建所需的并行循环方面的任何帮助都将对我非常有帮助,我们将不胜感激。而且,我想提到的是,我对python非常陌生,因此可能在上面的尝试中犯了一些愚蠢的错误。

并行遍历两个字典。


我找不到合适的副本来回答你的问题。假设两个字典都有相同的键,例如{'sheet1':sheet1_dataframe}-使用一个字典中的键访问另一个字典的值。

for key, df1 in load1.items():
df2 = load2[key]
# do all your processing

如果两个文件之间的excel工作表名称不同,但您希望将其中一个文件的第一张工作表与另一个文件中的第一张表配对,则在读取文件时为工作表名称指定一个整数列表。生成的词典将具有相同的键。pandas.read_excel

例如,一个包含三张图纸的excel文件,分别命名为'foo''bar''baz'

In [106]: q = pd.read_excel('book1.xlsx', sheetname=[0,1,2])
In [107]: for key,value in q.items():
...:     print(f'key:{key}')
...:     print(value)
...:     print('.......')
...:     
key:0
a  b
0  1  2
1  1  2
.......
key:1
a  b
0  1  2
1  2  2
2  3  2
.......
key:2
a  b  c
0  1  2  3
1  6  5  4
.......

在较新版本的Pandas中,参数是sheet_name而不是sheetname

最新更新