Мне нужно сделать то, что, вероятно, очень просто для опытного программиста.Моя программа на Python успешно выполняет следующие действия:
- Импорт электронной таблицы Excel
- Итерация по строкам и подсчет повторяющихся вхождений "Model", независимо от того, используется модель (Location) илинет, и кто "потреблял" модель (и сколько они потребляли).Все, что не «потреблено», будет считаться «доступным».
- Распечатайте «Модель», «Потреблено», «Доступно» и «Запрашивающий» (кто-то, кто потреблял модель).
Вместо того, чтобы просто печатать значения, мне нужно добавить их в лист в книге Excel с заголовками столбцов Model, Consumed, Avaible и Requestors.
Вот как я печатаю значения:
if not REQUESTORLIST:
print(CURRENTMODEL, "Consumed:", CONSUMEDCOUNTER, "Available:", AVAILABLECOUNTER)
else:
print(CURRENTMODEL,"Consumed:",CONSUMEDCOUNTER, "Available:",AVAILABLECOUNTER,REQUESTORS)
Вот типы данных:
print(type(CURRENTMODEL))
print(type(CONSUMEDCOUNTER))
print(type(AVAILABLECOUNTER))
print(type(REQUESTORS))
Выходы:
<class 'str'>
<class 'int'>
<class 'int'>
<class 'collections.Counter'>
Наконец, результаты программы урезаны:
Model WS-SFP Consumed: 1 Available: 2 Counter({'Requester Anthony House': 1})
Я новичок в программировании (это первая программа, которую я написал), и мне не удается найти способ получить эти значения для записи в таблицу Excelс четырьмя заголовками столбцов, которые мне нужны.Я пытался преобразовать их в строки и использовать .write, но пока безуспешно.У вас есть какие-нибудь предложения?
РЕДАКТИРОВАТЬ: Спасибо за быстрый ответ.Я думаю, что для меня может быть полезным просто опубликовать свой код.Я открыт для обратной связи о том, как оптимизировать эту вещь, поскольку она, вероятно, не на должном уровне.Я экспериментировал с .write, который пропускает строки в выводе таблицы Excel, не заполняет заголовки столбцов и т. Д. Вероятно, не лучший вариант.
import os
import openpyxl
import matplotlib
import numpy
import pandas as pd
import xlrd
import xlwt
from xlwt import Workbook
import xlsxwriter
from collections import Counter
#file to pull data from
excel_file = 'Customer_Inventory_Test.xlsx'
models = pd.read_excel(excel_file)
#file to export results
workbook = xlsxwriter.Workbook('Inventory Report.xlsx')
worksheet = workbook.add_worksheet()
row = 0
col = 0
ROWCOUNT = models.shape[0]
while True:
CONSUMEDCOUNTER = 0
AVAILABLECOUNTER = 0
REQUESTORLIST = []
#break when no more rows
if row == ROWCOUNT:
break
MODEL = models.iloc[row, [0]]
#convert to string for comparison
MODEL = MODEL.to_string()
CURRENTMODEL = MODEL
LOCATION = models.iloc[row, [2]]
LOCATION = LOCATION.to_string()
while CURRENTMODEL == MODEL:
if "Consumed" in LOCATION:
CONSUMEDCOUNTER += 1
REQUESTOR = models.iloc[row, [17]]
# convert to string for comparison
REQUESTOR = REQUESTOR.to_string()
REQUESTORLIST.append(REQUESTOR)
else:
AVAILABLECOUNTER += 1
row += 1
if row == ROWCOUNT:
break
MODEL = models.iloc[row, [0]]
MODEL = MODEL.to_string()
LOCATION = models.iloc[row, [2]]
LOCATION = LOCATION.to_string()
REQUESTORS = Counter(REQUESTORLIST)
if not REQUESTORLIST:
worksheet.write(row, col, CURRENTMODEL)
worksheet.write(row, col + 1, CONSUMEDCOUNTER)
worksheet.write(row, col + 2, AVAILABLECOUNTER)
print(CURRENTMODEL[9:], "Consumed:", CONSUMEDCOUNTER, "Available:",
AVAILABLECOUNTER)
else:
worksheet.write(row, col, CURRENTMODEL)
worksheet.write(row, col + 1, CONSUMEDCOUNTER)
worksheet.write(row, col + 2, AVAILABLECOUNTER)
#worksheet.write(row, col + 3, REQUESTORS) <- Doesn't like
#requestors data structure
print(CURRENTMODEL[9:],"Consumed:",CONSUMEDCOUNTER,
"Available:",AVAILABLECOUNTER,REQUESTORS)
workbook.close()