Как сделать vlookup на отлично (разные имена столбцов), используя python - PullRequest
0 голосов
/ 01 мая 2020

экспертов, я хочу выполнить vlookup между двумя экземплярами с двумя разными именами столбцов и имя выходного столбца также будет отличаться.

Давайте рассмотрим приведенный ниже пример, чтобы понять сценарий. В исходном файле excel1 у меня имя столбца как «Имя компьютера» в позиции A, В исходном файле excel2 у меня также есть имя столбца как «короткий» в позиции B. I хотите выполнить vlookup (своего рода левое соединение sql) между столбцом excel file1 «Имя компьютера» и столбцом excel file2 и «short». После vlookup я хочу добавить вывод vlookup в файл Excel1 в качестве имени cloumn как "перекрестная проверка CMDB", которая находится в позиции B на экране печати, показанном ниже финального файла Excel для вывода. Обратите внимание, что остальные все столбцы файла Excel1 останутся там, только новый столбец займет позицию B в файле Excel1

Исходный файл Excel1:

enter image description here

Исходный файл Excel2: enter image description here

Выходной файл Excel:

enter image description here

I Я использую приведенный ниже код, но он не работает. Рекомендовать вам, пожалуйста, предложить

import pandas as pd
import numpy as np

avclient_workbook ="AV_Clients1.xlsx"
cmdb_workbook = "cmdb_all.xlsx"

output_workbook = "AVClientCMDBAll.xlsx"
df_avclient_workbook = pd.read_excel(avclient_workbook)
df_cmdb_workbook = pd.read_excel(cmdb_workbook)

#print(df_avclient_workbook.columns)
#print(df_cmdb_workbook.columns)
df_avclient_workbook.rename(columns={'Computer name':'short'}, inplace=True) #just trying to rename it
#not able to achive :(
df_3 = pd.merge(df_avclient_workbook, df_cmdb_workbook[['short', 'short']], on='short',how='left')
print(df_3)

1 Ответ

0 голосов
/ 04 мая 2020

так, ребята, наконец, я сделал это с помощью следующего кода. Хотя я добавил список столбцов вручную и все еще находил способ, которым я мог бы динамически выдавать этот список столбцов.

import pandas as pd
import numpy as np
import warnings
warnings.filterwarnings('ignore')

avclient_workbook ="File1.xlsx"
cmdb_workbook = "File2.xlsx"

output_workbook = "File3.xlsx"
df_avclient_workbook = pd.read_excel(avclient_workbook)
df_cmdb_workbook = pd.read_excel(cmdb_workbook)

merged_dataset = pd.merge(df_avclient_workbook, df_cmdb_workbook, how='left',
                          left_on='Computer name',
                          right_on='short')
final_dataset = merged_dataset[df_avclient_workbook.columns]
final_dataset['CMDB crosscheck'] = merged_dataset['short']
#list of column names which i want to populate
final_dataset = final_dataset[["Computer name","CMDB crosscheck","Computer DNS name","IP address","User account","Management server","Group name","Vendor","Product name","Product version","FW policy","Definition version","Server definition","Delta time","Definition date","Delta range","Last connection (UTC)","Last connection range","Last AD connection","AV status","FW status","IPS status","ATP status","Agent GUID","Agent version","Scan engine","FW version","Hotfixes","OS name","OS version","Platform","Platform type","Architecture","Group path","Cloud / infra","Management proxy","Management proxy IP","ITSM name","ITSM priority","ITSM install status","ITSM responsible group","Tags","Excluded tags","Tree sorting","Last update (UTC)","Problem found","Problem description"]]

final_dataset.to_excel(output_workbook, index=False)

#writer.save()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...