Импорт нескольких файлов Excel с одинаковыми именами, поворот каждого файла Excel и последующее добавление результатов в один файл

#python #pandas #dataframe #numpy #pivot

#питон #pandas #фрейм данных #тупой #поворотный

Вопрос:

Моя постановка проблемы такая же, как и выше. Ниже приведен мой прогресс на данный момент

  1. Я хочу извлечь несколько файлов Excel из одного и того же места, а именно

Тест1 Тест2 Тест3…(Для этого я использую glob) (ГОТОВО) 2. Я хочу перебрать папку и найти файлы, начинающиеся со строки (ГОТОВО) 3. Затем я сформировал пустой фрейм данных. Затем я хочу повернуть 1-й файловый фрейм данных на основе даты (в виде столбцов), перейти к следующему файлу (сделайте то же самое), а затем добавить мои результаты в фрейм данных.

Моя проблема сейчас в том, что я добавляю все результаты в сводную таблицу, созданную с использованием моего первого файла.

Может кто-нибудь, пожалуйста, помогите.

 import pandas as pd
import numpy as np
import glob
glob.glob("C:/Users/Tom/Desktop/DC")
all_data = pd.DataFrame()
for f in glob.glob("C:/Users/Tom/Desktop/DC/Test?.xlsx"):
    df = pd.read_excel(f)
    pivot = pd.pivot_table(df, index='DC Desc', columns='Est Wk End Date', values=['Shipped/Ordered Units',aggfunc='sum')
    all_data = all_data.append(pivot,ignore_index=True)
all_data.to_excel("outputappended2.xlsx")
 

Редактировать.

Большое спасибо за ваш ответ. Это очень помогает. Не могли бы вы также рассказать мне, как перед объединением следующего сводного элемента я могу добавить новую строку, чтобы я мог различать результаты, а также сортировать по дате.

Например. Я получаю следующий результат

DC Desc 24,21 апреля, 21 декабря, 1,2020 Февраля, 6,2021 a 5000
b 2000 4000 c 1000

и я ищу

DC Desc Декабрь 1,2020 Апрель 24,21 Февраль 6,2021 a 5000
b 2000 4000

c 1000 В поисках этого я мог определить, какую информацию я получаю из других файлов, а также отсортировать столбцы. Любая помощь приветствуется.

Ответ №1:

Вашей лучшей альтернативой должно быть использование pd.concat . Простой подход, который мне нравится, заключается в создании processing функции, а затем объединении всех фреймов данных. Что-то вроде этого:

 import pandas as pd
import glob

def pivot_your_data(f):
    df = pd.read_excel(f)
    return pd.pivot_table(df, index='DC Desc', columns='Est Wk End Date', values='Shipped/Ordered Units', aggfunc='sum')

all_data = pd.concat([pivot_your_data(f) for f in glob.glob("C:/Users/Tom/Desktop/DC/Test*.xlsx")])
 

Затем вы можете удалить индекс или выполнить дополнительную обработку данных, но главное — использовать pd.concat