У меня есть электронная таблица, в которой имена пользователей находятся в одном столбце, а их оборудование - в другом («B» и «E»).Это вымышленный пример из листа:
A B C E F
CI Number Username Department Equipment Model
1423 Mike Brandt Sales iPhone 8
5345 Mike Brandt Sales iPad Air
8473 Christina HR iPhone 6s
8474 Christina HR Laptop T500
0983 Christina HR iPhone 8
Я думал о том, чтобы перебрать каждую строку в B и, если это один и тот же пользователь, то проверить, имеют ли они одинаковое оборудование.
Mike Brandt --> iPhone
Mike Brandt --> iPad
это было бы неверно, поскольку у Майка были iPhone и iPad. Однако с Кристиной
Christina --> iPhone
Christina --> Laptop
Christina --> iPhone
было бы верно, и в ячейку G вставлялась бы "*", чтобы отметить дублирование пользователя.Предметы.
Это для моей работы, где нам иногда приходится вручную читать лист Excel и проверять, не вернул ли пользователь свое устройство, прежде чем получить новое.(Может быть до 1000 пользователей, поэтому я пытаюсь это сделать). Я не могу понять, что мне нужно сделать, чтобы сравнить пользователя и посмотреть, есть ли у него два одинаковых устройства.
import openpyxl
path = '/home/steven/Documents/Python/Arbejde/test.xlsx'
# Open Workbook & Worksheet
wb = openpyxl.load_workbook(path)
ws = wb.get_active_sheet()
def clean_list(ws):
#Loop over e rows, and check each cell for a match.
for row in range(2, ws.max_row+1):
for column in "BE":
cell_name = "{}{}".format(column, row)
if ws[cell_name].value == ws[cell_name].value:
#Check code should be here
print(clean_list(ws))
Я ожидал, что результат будет примерно таким:
8473 Christina HR iPhone 6s *
8474 Christina HR Laptop T500
0983 Christina HR iPhone 8
Решение :
import pandas as pd
path = '/home/steven/Documents/Python/Arbejde/Altudstyr.xlsx'
xlsx = pd.ExcelFile(path)
df = pd.read_excel(xlsx, 'Ark1') # Reads the excel_sheet
#If dup, print a "*" to column Duplet.
df['Duplet'] = df.duplicated(['End user', 'Standard']).map({True: '*', False: ''})
df.to_excel('Sorted_List.xlsx')