Como comparar colunas em duas planilhas Excel diferentes e se houver correspondência, copie outros valores de coluna

0
Voto

Eu tenho duas planilhas excelentes, digamos input.xlsx e output.xlsx

, tenho duas planilhas excelentes, digamos input.xlsx e output.xlsx

folha de entrada.xlsx como abaixo

folha de entrada.xlsx como abaixo
SL_No  map_id   Req_ID  Test_case_ID    Automation_TC_ID    Results  
1       abc     xyz     test case1      NA                  Pass  
2       vgf     xxx     test case2      NA                  fail  
3       fds     xxx     test case3      NA             
4       qew     xxxx    test case4      NA                  Pass  
5       ayz     wrew    test case5      NA    
6       dfd     sdf     test case6      NA                  fail  
SL_No map_id Req_ID Test_case_ID Automation_TC_ID Results 1 abc xyz test case1 NA Pass 2 vgf xxx test case2 NA fail 3 fds xxx test case3 NA 4 qew xxxx test case4 NA Pass 5 ayz wrew test case5 NA 6 dfd sdf test case6 NA fail SL_No map_id Req_ID Test_case_ID Automation_TC_ID Resultados 1 abc xyz test case1 NA Pass 2 vgf xxx caso de teste 2 NA falha 3 fds xxx caso de teste 3 NA 4 qew xxxx test case4 NA Pass 5 ayz wrew test case 5 NA 6 dfd sdf caso de teste 6 NA falha

output.xlsx como abaixo

output.xlsx como abaixo
ID  URL     Name          Results  
20  0   test case1  
21  0   test case2  
22  0   test case3  
23  0   test case4  
24  0   test case5  
25  0   test case6   
ID URL Name Results 20 0 test case1 21 0 test case2 22 0 test case3 23 0 test case4 24 0 test case5 25 0 test case6 ID URL Nome Resultados 20 0 caso de teste 1 21 0 caso de teste 2 22 0 caso de teste 3 23 0 caso de teste 4 24 0 caso de teste 5 25 0 caso de teste 6

em input.xlsx, temos que pegar a coluna"Test_Case_ID"e pesquisar na planilha Output.xlsx na coluna"Nome"se corresponder, então temos que copiar a coluna"Resultado"da planilha input.xlsx para a coluna"Resultados"de folha de saída.

em input.xlsx temos que pegar a coluna"Test_Case_ID"e pesquisar na folha Output.xlsx na coluna"Nome"se corresponder, então temos que copiar a coluna"Resultado"da folha de entrada.xlsx para"Resultados"coluna da folha de saída.

Nota: se a coluna Resultado tiver Aprovado, deve ser aprovado; se falhar, deve ser copiado como reprovado e se estiver vazio, deverá estar vazio na folha xlsx de saída.

Observação: se a coluna Resultado tiver Aprovado, então deve passar, se falhar, deve copiar como falha e se estiver vazio, deve estar vazio na folha xlsx de saída.

alguém pode me ajudar a escrever um código em python. Atualmente estou aprendendo python Obrigado antecipadamente !!

alguém pode me ajudar a escrever um código em python. Atualmente estou aprendendo python Desde já, obrigado!!

eu tentei este:

eu tentei este:
import pandas as pd
import numpy as np
# Load in the input
df1=pd.read_excel('input.xlsx')
# Load in the output
df2=pd.read_excel('output.xlsx')

df2['Results']=np.where(df1['Test_Case_ID']==df2['Name'], df1['Results'])
print df2.head()
import pandas as pd import numpy as np # Load in the input df1=pd.read_excel('input.xlsx') # Load in the output df2=pd.read_excel('output.xlsx') df2['Results']=np.where(df1['Test_Case_ID']==df2['Name'], df1['Results']) print df2.head() importar pandas como pd importar numpy como np # Carregar na entrada df1=pd.read_excel ('input.xlsx') # Carregar na saída df2=pd.read_excel ('output.xlsx') df2['Resultados']=np.where (df1['Test_Case_ID']==df2['Nome'], df1['Resultados']) print df2.head ()

mas ficando abaixo do erro

mas ficando abaixo do erro

Arquivo"C: \Python27 \lib \site-packages \pandas \core \ops.py", linha 1676, no wrapper
raise ValueError ("Só pode comparar com rótulos idênticos"
ValueError: só pode comparar objetos Series com rótulos idênticos

Arquivo"C: \Python27 \lib \site-packages \pandas \core \ops.py", linha 1676, no wrapper
raise ValueError ("Só pode comparar com rótulos idênticos"
ValueError: Só pode comparar objetos Series com rótulos idênticos

Arquivo"C: \Python27 \lib \site-packages \pandas \core \ops.py", linha 1676, no wrapper
raise ValueError ("Só pode comparar com rótulos idênticos"
ValueError: só pode comparar objetos Series com rótulos idênticos

Fonte

pandas python excel

1 -VBA Pete

1 Responda
0
Voto

O que você descreve é ​​uma junção externa SQL. Você pode fazer isso facilmente em pandas, como:

import pandas as pd
# Load in the input
df1=pd.read_excel('input.xlsx')
# Load in the output
df2=pd.read_excel('output.xlsx')

# Perform the join. The join only requires 'Test_case_ID' and 'Results' from the input.
df1[['Test_case_ID', 'Results']].merge(
    # Since there is already a column called 'Results' in the output.xlsx file, which we don't need, I drop it here
    df2.drop(['Results'], axis=1),
    # We want one entry per line in the output, since the output (df2) is on the right, this is an 'right' join.
    how='right',
    # We are comparing 'Test_case_ID' from the left (df1)
    left_on='Test_case_ID',
    # and 'Name' from the right (df2).
    right_on='Name'
).to_excel('result.xlsx') # And then saving the result in another excel file called 'result.xlsx'

Veja pandas merge doc para mais detalhes sobre como funciona a função de mesclagem

Fonte

-Vimala R

-mananony

Você pode interessar

© 2021   OlaMundo.Org