#python #spyder
#python #spyder
Вопрос:
У меня есть лист Excel, содержащий только «Идентификатор сотрудника» в столбце A, как показано ниже. Эти сведения сохраняются в таблице Excel с именем EmpId.xlsx
1677
5597
5623
5618
У меня есть еще один лист Excel, содержащий «Сведения о сотрудниках» из более чем 10000 сотрудников. Например: таблица сведений о сотруднике, содержащаяся в Excel, содержит данные о многих сотрудниках, вот пример одного из идентификаторов сотрудника, показанных ниже. Эти сведения сохраняются в таблице Excel с именем UserList.xlsx
Empid Name Location JobTitle Email-id Department
1677 Umesh Gadag ASE abc@gmail.com Civil
У меня есть рабочий код на Python, который при запуске я получаю результат. В основном таблица Empid Excel содержит только идентификаторы сотрудников, а таблица UserList Excel содержит сведения о более чем 10000 сотрудниках. В основном для EmpIDs я получаю сведения о списке пользователей в выходных данных.Ниже приведен код
import pandas as pd
df1 = pd.read_excel (r'C:\Users\Kiran\Desktop\PythonWork\EmpId.xlsx')
df2= pd.read_excel (r'C:\Users\Kiran\Desktop\PythonWork\UserList.xlsx')
df1 = df1.reset_index().rename(columns= {"index": "order"})
df3 = pd.merge(df1, df2, on = "Empid").sort_values("order").drop("order", axis=1)
df3.to_excel("Output.xlsx",index=False)
import os
file = "Output.xlsx"
os.startfile(file)
Код работает нормально, но есть проблема. Предположим, мне нужны данные пользователя для этих 4 идентификаторов (1677,5597,5623,5618), когда я запускаю, я получаю вывод в виде
Empid Name Location JobTitle Email-id Department
1677 Umesh Gadag ASE abc@gmail.com Civil
5597 Rahul Hubli ASE xyz@gmail.com Electrical
5618 Ramesh Hubli SE pqr@gmail.com Civil
Я не получил выходные данные для 5623, это нормально, поскольку, возможно, для Empid 5623 может не быть списка пользователей. Но в выходных данных я, за исключением получения выходных данных в виде:
Empid Name Location JobTitle Email-id Department
1677 Umesh Gadag ASE abc@gmail.com Civil
5597 Rahul Hubli ASE xyz@gmail.com Electrical
5623
5618 Ramesh Hubli SE pqr@gmail.com Civil
Чтобы я мог перепроверить позже. Как изменить код так, чтобы при любом EmpID, если для него нет списка пользователей, я должен получить такой же пустой, как показано выше. Может ли кто-нибудь помочь мне это исправить.
Ответ №1:
пожалуйста, попробуйте включить: how="left"
в слияние
который должен отображать все строки из левой таблицы (df1) и добавлять только то, что также произошло в df2
df3 = pd.merge(df1, df2, on = "Empid", how="left").sort_values("order").drop("order", axis=1)
Потому что согласно документации по умолчанию используется: how='inner'
который выбросит все, чего нет в обеих таблицах.
Комментарии:
1. Рад, что смог помочь! Не могли бы вы также принять ответ как принятый, если бы это решило проблему? Счастливого кодирования!