Python Pandas Pivot - изменение значений столбцов Aggc на строки - PullRequest
0 голосов
/ 14 октября 2018
df = pd.DataFrame({"AgentName": ['airlines_all_flightdetails', 'airlines_all_flightdetails', 'airlines_all_flightdetails', 'airlines_all_flightdetails', 'airlines_all_flightdetails', 'airlines_all_flightdetails', 'airlines_all_flightdetails', 'airlines_all_flightdetails', 'airlines_all_flightdetails', 'airlines_all_flightdetails'],
               "OutputTableName": ['carrier=xx', 'carrier=xx', 'carrier=xx', 'carrier=xx', 'carrier=xx', 'carrier=xx', 'carrier=xx', 'carrier=xx', 'carrier=xx', 'carrier=xx'],
               "LastModified": ['10/13/2018', '10/13/2018', '10/12/2018', '10/12/2018', '10/11/2018', '10/11/2018', '10/10/2018', '10/09/2018', '10/08/2018', '10/07/2018'],
               "Size": [540722, 1995963, 541308, 2179389, 469444, 1519627, 472355, 472622, 1691951, 2012013]
                })
pivot = df.pivot_table(index=['AgentName', 'OutputTableName'], values='Size', columns='LastModified', aggfunc=[np.sum, 'count'])

#stacked = pivot.stack(0)

print (pivot.head())

Я должен суммировать размер и количество записей, которые у нас есть на дату.

После выполнения сводная сумма и число появляются в столбце, тогда как я хочу в строках, подобных этой

какой код мне нужно написать, чтобы получить такой же вывод.

Заранее спасибо.

1 Ответ

0 голосов
/ 14 октября 2018

Ваш код должен возвращать то, что вы хотите, если вы просто раскомментируете stacked = pivot.stack(0)

Если вы хотите, чтобы столбец индекса был отсортирован как изображение и имел имя Values, вы можете сделать это:

# Given
df = pd.DataFrame({"AgentName": ['airlines_all_flightdetails', 'airlines_all_flightdetails', 'airlines_all_flightdetails', 'airlines_all_flightdetails', 'airlines_all_flightdetails', 'airlines_all_flightdetails', 'airlines_all_flightdetails', 'airlines_all_flightdetails', 'airlines_all_flightdetails', 'airlines_all_flightdetails'],
               "OutputTableName": ['carrier=xx', 'carrier=xx', 'carrier=xx', 'carrier=xx', 'carrier=xx', 'carrier=xx', 'carrier=xx', 'carrier=xx', 'carrier=xx', 'carrier=xx'],
               "LastModified": ['10/13/2018', '10/13/2018', '10/12/2018', '10/12/2018', '10/11/2018', '10/11/2018', '10/10/2018', '10/09/2018', '10/08/2018', '10/07/2018'],
               "Size": [540722, 1995963, 541308, 2179389, 469444, 1519627, 472355, 472622, 1691951, 2012013]
                })

# Given
pivot = df.pivot_table(index=['AgentName', 'OutputTableName'], values='Size', columns='LastModified', aggfunc=[np.sum, 'count'])

# Moves 'Values' from columns to index
stacked = pivot.stack(0)

# sorts index to relfect image
stacked.sort_index(level = 2, ascending = False, inplace = True)

# renames inner index to 'Values'
stacked.index.rename('Values', level = 2, inplace = True)

# rename inner index values
stacked.rename(index = {
    'sum' : 'Sum of Size',
    'count' : 'Count of OutputFileName'
})

Должно возвращать следующее:

output

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...