Почему этот код приводит к алфавитному списку столбцов в Excel? - PullRequest
1 голос
/ 09 февраля 2020
table = pd.pivot_table(gains,
                       index=['Account', 'Date', 'Security'],
                       values=['Units', 'Proceeds', 'ACB', 'Gain(Loss)'])

# pivot table for gains(losses) broken down by investment account

for account in table.index.get_level_values(0).unique():
    # print gains losses sheets one summary for each investment account
    temp_df = table.xs(account, level=0)
    # column_titles = ['Units', 'Proceeds', 'ACB', 'Gain(Loss)']
    # temp_df.reindex(columns=column_titles)
    s_name = account + ' - ' + str(idate.year)
    temp_df.to_excel(writer, sheet_name=s_name,
                     columns=['Units', 'Proceeds', 'ACB', 'Gain(Loss)'])

На первом листе Excel показан правильный порядок столбцов для кадра данных прироста:

, т. Е. На дату счета. Единицы безопасности обрабатываются ACB Gain (Loss)

Но отдельный файл temp.df Фреймы данных создают таблицы Excel со следующим порядком столбцов:

т.е. единицы измерения прибыли (убытка) ACB для защиты от прибыли

Обратите внимание, что после столбцов Дата и Безопасность столбцы располагаются в алфавитном порядке, хотя у меня есть Параметр columns = [] в моем коде. Некоторое время это работало должным образом и внезапно возвращалось в алфавитном порядке для «Процентные поступления ACB и Gain (Loss)»

Любая помощь будет принята с благодарностью.

Редактировать: Порядок в фрейм данных - это «Дата счета. Единицы безопасности обрабатывают ACB Gain (Loss)», но процедура to_excel выглядит по алфавиту от «Units» и далее для отдельных листов.

Edit2: В качестве альтернативы, каков наилучший способ получить эти столбцы в том порядке, который я хочу. Должен ли я использовать openpyxl, xlrd, xlwt или это то, что я хочу на самом деле не возможно?

1 Ответ

0 голосов
/ 10 февраля 2020

Я решил это следующим образом:

s_name = account + ' - ' + str(idate.year)
            temp_df = temp_df[['Units', 'Proceeds', 'ACB', 'Gain(Loss)']]
            temp_df.to_excel(writer, sheet_name=s_name,
                             columns=['Units', 'Proceeds', 'ACB', 'Gain(Loss)'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...