математический расчет на сводной таблице панд - PullRequest
0 голосов
/ 18 октября 2019

Я преобразовал один лист Excel в сводную таблицу, используя фрейм данных Pandas. Я хочу сделать некоторые расчеты. Сводная таблица создана, как показано ниже. Первая строка - заголовок. Я хотел бы рассчитать доходность для каждого предмета, например, Badam = T / HA (т.е.) доходность для Badam = 14558/4811 и добавить доходность в качестве моего последнего столбца. T и HA из столбца «Единица». Я не мог найти примеры, чтобы продолжить и дальше. Было бы здорово, если бы эксперты помогли.

enter image description here

Или мне следует перейти от сводной таблицы к "групповому" для такого рода расчетов? Спасибо.

Ответы [ 2 ]

0 голосов
/ 21 октября 2019

Спасибо. Я старался, как говорил Алексей, и подсчитал результаты. Я пытался преобразовать сводную таблицу в таблицу Excel с помощью (to_excel). Но только последние 4 столбца записываются в таблицу Excel (т. Е.) «HA, N, T и результаты», но не указываются штат, район, год и позиция. Как записать все 8 столбцов в таблицу Excel?

Следующее, что я попробовал, было res.stack (). Это серии панд, которые затем преобразуются в датафреймы, а затем записываются в лист Excel. Это также записывает все столбцы в один высокий столбец в файле Excel. Означает ли это, что сводная таблица теряется, когда я пытаюсь вычислить с помощью res.assign(result = res['T']/res['HA'])? Может кто-нибудь пролить свет на то, как отменить эту таблицу как

   state District Year Item      HA     N   T      results           
   TN    Trichy   2016 Badam     4811   59  14558  3.025982
   TN    Trichy   2016 Carrots  18973  123  35990  1.896906

Спасибо.

0 голосов
/ 18 октября 2019

пример данных:

    state   District    Year    Item    Unit    Amount
0   TN      Trichy      2016    Badam   HA  4811
1   TN      Trichy      2016    Badam   N   59
2   TN      Trichy      2016    Badam   T   14558
3   TN      Trichy      2016    Carrots HA  18973
4   TN      Trichy      2016    Carrots N   123
5   TN      Trichy      2016    Carrots T   35990

вот код:

res = df.pivot_table(index=['state','District','Year','Item'], values = 'Amount', columns =['Unit'])

    Out[25]: 
                        Unit       HA    N      T
    state District Year Item                      
    TN    Trichy   2016 Badam     4811   59  14558
                        Carrots  18973  123  35990

res.assign(result = res['T']/res['HA'])

    Out[28]: 
                        Unit        HA    N      T    result
    state District Year Item                                
    TN    Trichy   2016 Badam     4811   59  14558  3.025982
                        Carrots  18973  123  35990  1.896906
...