Пакетная обработка нескольких файлов Excel в папке с помощью сценария Python и вывод в папку, игнорируя другие типы файлPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Пакетная обработка нескольких файлов Excel в папке с помощью сценария Python и вывод в папку, игнорируя другие типы файл

Сообщение 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)


Подробнее здесь: https://stackoverflow.com/questions/792 ... outputting
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»