numpy Phyton在向Excel写入时

mccptt67  于 2023-04-21  发布在  其他
关注(0)|答案(1)|浏览(129)

执行这段代码需要很长时间。我有一个名为coilid的表,大约有3000行。我希望程序转到coilid,查看处理日期,并与retifica进行比较,如果它在确定的范围内,那么我希望他们导出一些retifica单元格。它适用于coilid中的所有行。

import pandas as pd

retifica = pd.read_excel('C:\Arquivoparamim.xlsx', sheet_name='Planilha1')
retifica = retifica.sort_values(by=['Data Retífica'], ascending=True)

coilid = pd.read_excel('C:\Arquivoparamim.xlsx', sheet_name='Planilha2')
coilid = coilid.sort_values(by=['DT_START'], ascending=True)

match=pd.DataFrame()

for x in range (coilid.shape[0]):
    for y in range (retifica.shape[0]):
        if (coilid.iloc[x,2]>retifica.iloc[y,16])&(coilid.iloc[x,2]<retifica.iloc[y,18]):
            matchaux = [coilid.iloc[x],retifica.iloc[y]]
        else:
            matchaux = [coilid.iloc[x]]
            match=match.append(matchaux)
        break
    

match.to_excel('Libraries\Pictures\aline.xlsx')

我希望程序能在coilid id [DT_START]与retifica中的信息“Data de entrada e“Data de Saída之间进行比较。如果coilid在这些数据之间,那么它会将coilid行的值与ret和cilindro以及retifica文件连接在一起返回到Excel工作表中。
Retifica row enter image description here
螺旋状的
enter image description here

wlzqhblo

wlzqhblo1#

在处理这么多行时,对代码进行向量化是很重要的。您可以使用between方法创建一个布尔掩码,以指示DT_START列的每个元素是否位于Data de entradaData de Saída列的相应元素之间。也许这会有所帮助

# Load dataframes
retifica = pd.read_excel('C:\Arquivoparamim.xlsx', sheet_name='Planilha1')
coilid = pd.read_excel('C:\Arquivoparamim.xlsx', sheet_name='Planilha2')

# Sort dataframes by dates
retifica = retifica.sort_values(by=['Data Retífica'], ascending=True)
coilid = coilid.sort_values(by=['DT_START'], ascending=True)

# Perform the comparison using vectorized operations
mask = coilid['DT_START'].between(retifica['Data Entrada'].values, retifica['Data Saída'].values, inclusive=False)
coilid_filtered = coilid.loc[mask].reset_index(drop=True)
retifica_filtered = retifica.loc[mask.values].reset_index(drop=True)

# Concatenate dataframes and select columns of interest
match = pd.concat([coilid_filtered, retifica_filtered[['ret', 'cilindro']]], axis=1)

match.to_excel('Libraries\Pictures\aline.xlsx', index=False)

相关问题