#python #pandas #dataframe #numpy #pivot
#питон #pandas #фрейм данных #тупой #поворотный
Вопрос:
Моя постановка проблемы такая же, как и выше. Ниже приведен мой прогресс на данный момент
- Я хочу извлечь несколько файлов 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