Каждую неделю наше программное обеспечение для составления отчетов о запасах выводит более 15 различных отчетов о запасах (по одному для каждого поставщика соответственно) в формате .xlsx в одну папку.
Все таблицы Excel имеют одинаковый формат. но требуется немало манипуляций, прежде чем он станет «пригодным для использования» конечным пользователем. После попыток изучить Python на прошлой неделе и собрать воедино различные фрагменты кода мне удалось придумать ОЧЕНЬ грубый сценарий для выполнения необходимой обработки.
Скрипт работает как желательно, но в настоящее время мне приходится вручную вводить путь к отдельному файлу листа Excel и изменять имя выходного файла в сценарии, а затем запускать сценарий для каждого соответствующего файла Excel. Выполнение этого для более чем 15 файлов каждую неделю делает сценарий ненужным, поскольку потребуется меньше времени, чтобы просто переформатировать в Excel вручную.
После более тщательного чтения форума и попыток подключить мой сценарий к чужому коду решения (https://python-forum.io/thread-10841.html) Я в тупике. Я изо всех сил пытаюсь придумать функцию для пакетной обработки всех файлов Excel в одной папке и игнорирования всех остальных файлов. В идеале обработанные файлы должны заменить исходные файлы Excel в той же папке, но если это невозможно, то это не является препятствием.
Чтобы добавить еще один кривый мяч в смесь, я пишу свой сценарий. и развертывание моего кода на моем Mac (используя копию файла .xlsx, который я отправил себе с работы, и путь к файлу Mac OS) для тестирования моего сценария, но я надеюсь развернуть этот сценарий в системе Windows на работе в конечном итоге.
Ниже я включил только свой оригинальный, работающий в настоящее время сценарий.
Спасибо всем
#import pandas library
import pandas as pd
#import numpy
import numpy as np
#importing our excel to dataframe
df = pd.read_excel('/Users/christiane/Downloads/AGLC CJ Test.xls.xlsx')
#renaming our headers for each column
df = df.set_axis(['vendor code', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'current inventory', 'incoming inventory', 'm', 'Sales: Previous 4 weeks', 'o'], axis=1)
#convert 'vendor code' column data to string data
df['vendor code'] = df['vendor code'].astype(str)
#delete everything that doesn't start with a number from the bottom of the table
df = df[~df['vendor code'].str.contains("[a-zA-Z]").fillna(False)]
#convert 'vendor code' column data to interger data
df['vendor code'] = df['vendor code'].astype(int)
#sort values in column #1 from smallet to largest
df.sort_values(by='vendor code', ascending=True, inplace=True)
#add new column at the end input formula and populate downwards (=K1+L1)
df['expectedinventory'] = df.loc[:,['current inventory', 'incoming inventory']].sum(axis=1)
#move 'expected inventory' column from the end position to correct column position
name_col = df.pop('expectedinventory')
df.insert(12, 'expectedinventory', name_col)
#delete columns 'm' and 'o'
df = df.drop(['m', 'o'], axis=1)
#run formula for 4 weeks of back orders and populate column “sold in last 4 weeks” with the results
df['Sales Advice'] = df['expectedinventory'] - (( df['Sales: Previous 4 weeks']*1) + (0.1*( df['Sales: Previous 4 weeks'])*1))
#Don't know what this does but it works!
pd.set_option('future.no_silent_downcasting', True)
#change NaN values to Zero
df['Sales Advice'] = df['Sales Advice'].fillna(0)
inventory_data = pd.DataFrame(df)
cols = ['Sales Advice']
inventory_data.loc[:, cols] = inventory_data[cols].astype('float64').round()
#delete unnecessary columns
df = df.drop(['b', 'c', 'e', 'f','g','h', 'i', 'j'], axis=1)
#adding a right-most column with NaN values
df = df.reindex(columns=df.columns.tolist() + ['Ordering Now'])
#output excel file
df.to_excel('filteredaglctest.xlsx', index = False)
Подробнее здесь: https://stackoverflow.com/questions/792 ... outputting
Пакетная обработка нескольких файлов Excel в папке с помощью сценария Python и вывод в папку, игнорируя другие типы файл ⇐ Python
Программы на Python
1732251094
Anonymous
Каждую неделю наше программное обеспечение для составления отчетов о запасах выводит более 15 различных отчетов о запасах (по одному для каждого поставщика соответственно) в формате .xlsx в одну папку.
Все таблицы Excel имеют одинаковый формат. но требуется немало манипуляций, прежде чем он станет «пригодным для использования» конечным пользователем. После попыток изучить Python на прошлой неделе и собрать воедино различные фрагменты кода мне удалось придумать ОЧЕНЬ грубый сценарий для выполнения необходимой обработки.
Скрипт работает как желательно, но в настоящее время мне приходится вручную вводить путь к отдельному файлу листа Excel и изменять имя выходного файла в сценарии, а затем запускать сценарий для каждого соответствующего файла Excel. Выполнение этого для более чем 15 файлов каждую неделю делает сценарий ненужным, поскольку потребуется меньше времени, чтобы просто переформатировать в Excel вручную.
После более тщательного чтения форума и попыток подключить мой сценарий к чужому коду решения (https://python-forum.io/thread-10841.html) Я в тупике. Я изо всех сил пытаюсь придумать функцию для пакетной обработки всех файлов Excel в одной папке и игнорирования всех остальных файлов. В идеале обработанные файлы должны заменить исходные файлы Excel в той же папке, но если это невозможно, то это не является препятствием.
Чтобы добавить еще один кривый мяч в смесь, я пишу свой сценарий. и развертывание моего кода на моем Mac (используя копию файла .xlsx, который я отправил себе с работы, и путь к файлу Mac OS) для тестирования моего сценария, но я надеюсь развернуть этот сценарий в системе Windows на работе в конечном итоге.
Ниже я включил только свой оригинальный, работающий в настоящее время сценарий.
Спасибо всем
#import pandas library
import pandas as pd
#import numpy
import numpy as np
#importing our excel to dataframe
df = pd.read_excel('/Users/christiane/Downloads/AGLC CJ Test.xls.xlsx')
#renaming our headers for each column
df = df.set_axis(['vendor code', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'current inventory', 'incoming inventory', 'm', 'Sales: Previous 4 weeks', 'o'], axis=1)
#convert 'vendor code' column data to string data
df['vendor code'] = df['vendor code'].astype(str)
#delete everything that doesn't start with a number from the bottom of the table
df = df[~df['vendor code'].str.contains("[a-zA-Z]").fillna(False)]
#convert 'vendor code' column data to interger data
df['vendor code'] = df['vendor code'].astype(int)
#sort values in column #1 from smallet to largest
df.sort_values(by='vendor code', ascending=True, inplace=True)
#add new column at the end input formula and populate downwards (=K1+L1)
df['expectedinventory'] = df.loc[:,['current inventory', 'incoming inventory']].sum(axis=1)
#move 'expected inventory' column from the end position to correct column position
name_col = df.pop('expectedinventory')
df.insert(12, 'expectedinventory', name_col)
#delete columns 'm' and 'o'
df = df.drop(['m', 'o'], axis=1)
#run formula for 4 weeks of back orders and populate column “sold in last 4 weeks” with the results
df['Sales Advice'] = df['expectedinventory'] - (( df['Sales: Previous 4 weeks']*1) + (0.1*( df['Sales: Previous 4 weeks'])*1))
#Don't know what this does but it works!
pd.set_option('future.no_silent_downcasting', True)
#change NaN values to Zero
df['Sales Advice'] = df['Sales Advice'].fillna(0)
inventory_data = pd.DataFrame(df)
cols = ['Sales Advice']
inventory_data.loc[:, cols] = inventory_data[cols].astype('float64').round()
#delete unnecessary columns
df = df.drop(['b', 'c', 'e', 'f','g','h', 'i', 'j'], axis=1)
#adding a right-most column with NaN values
df = df.reindex(columns=df.columns.tolist() + ['Ordering Now'])
#output excel file
df.to_excel('filteredaglctest.xlsx', index = False)
Подробнее здесь: [url]https://stackoverflow.com/questions/79213591/batch-processing-multiple-excel-files-in-folder-via-python-script-and-outputting[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия