Неверная сумма по группировке данных по нескольким столбцам ⇐ Python
-
Гость
Неверная сумма по группировке данных по нескольким столбцам
Сценарий. После создания кадра данных путем объединения набора кадров данных я хочу сгруппировать результат по двум столбцам и вывести сумму.
Кадр данных: testoutput2
+-----+-------+---------+-----------+------- -------------+----------+----------+----------+--- -------+ | Ключ | Индекс | Уровень 4 | МЭА ОРЭ22 | Регион МЭА Уровень 1 | 2018 МЭА | 2019 МЭА | 2020 МЭА | 2021 МЭА | +-----+-------+---------+-----------+------------- -------+----------+----------+----------+--------- -+ | ФРА | - | 12 000 | 12 000 | Развитые экономики | 54 | 37 | 26 | 0,00 | | ФРА | 1 | 11 000 | 11 000 | Развитые экономики | 8 | 8 | 7 | 11 | | ФРА | 3 | 31 100 | 31 100 | Развитые экономики | 4 | 3 | 3 | 0,00 | | БЕЛ | - | 12 000 | 12 000 | Развитые экономики | 8 | 9 | 7 | 0,00 | | БЕЛ | 1 | 11 000 | 11 000 | Развитые экономики | 1 | 1 | 1 | 2 | | БЕЛ | 3 | 31 100 | 31 100 | Развитые экономики | 1 | 1 | 1 | 0,00 | +-----+-------+---------+-----------+------------- -------+----------+----------+----------+--------- -+ Требуемый результат: набор фреймов данных, где каждый ключ представляет собой год. Содержимое кадра данных внутри dict будет следующим:
ключевой отчет МЭА 2018 г. +---------+--------------------+-----+ | Уровень 4 | Регион МЭА Уровень 1 | Сумма | +---------+--------------------+-----+ | 12 000 | Развитые экономики | 62 | | 11 000 | Развитые экономики | 9 | | 31 100 | Развитые экономики | 5 | +---------+--------------------+-----+ Проблема: При выполнении приведенного ниже кода я получаю неверный результат, где суммы не соответствуют ожидаемым значениям:
+---------+--------------------+-----+ | Уровень 4 | Регион МЭА Уровень 1 | Сумма | +---------+--------------------+-----+ | 12 000 | Развитые экономики | 61 | | 11 000 | Развитые экономики | 8 | | 31 100 | Развитые экономики | 4 | +---------+--------------------+-----+ Примечание: В настоящее время я тестирую этот код с меньшим фрагментом данных (как в примере здесь). Однако цель состоит в том, чтобы провести это с гораздо большим набором данных. В этом случае в столбце региона есть только одна запись, тогда как в основном наборе данных их больше.
Код:
scen_name = "IEA" scen_reg_out_dict={} год_список_2 = [2018,2019,2020,2021] для год_вар в год_список_2: scen_reg_out_dict[str(year_var) + " " + scen_name] = testoutput2.groupby(['Level 4','Region IEA Level 1'])[str(year_var) + " " + scen_name].agg(['sum'] ).astype('int64') Вопрос: Что может быть причиной сбоя расчета?
Сценарий. После создания кадра данных путем объединения набора кадров данных я хочу сгруппировать результат по двум столбцам и вывести сумму.
Кадр данных: testoutput2
+-----+-------+---------+-----------+------- -------------+----------+----------+----------+--- -------+ | Ключ | Индекс | Уровень 4 | МЭА ОРЭ22 | Регион МЭА Уровень 1 | 2018 МЭА | 2019 МЭА | 2020 МЭА | 2021 МЭА | +-----+-------+---------+-----------+------------- -------+----------+----------+----------+--------- -+ | ФРА | - | 12 000 | 12 000 | Развитые экономики | 54 | 37 | 26 | 0,00 | | ФРА | 1 | 11 000 | 11 000 | Развитые экономики | 8 | 8 | 7 | 11 | | ФРА | 3 | 31 100 | 31 100 | Развитые экономики | 4 | 3 | 3 | 0,00 | | БЕЛ | - | 12 000 | 12 000 | Развитые экономики | 8 | 9 | 7 | 0,00 | | БЕЛ | 1 | 11 000 | 11 000 | Развитые экономики | 1 | 1 | 1 | 2 | | БЕЛ | 3 | 31 100 | 31 100 | Развитые экономики | 1 | 1 | 1 | 0,00 | +-----+-------+---------+-----------+------------- -------+----------+----------+----------+--------- -+ Требуемый результат: набор фреймов данных, где каждый ключ представляет собой год. Содержимое кадра данных внутри dict будет следующим:
ключевой отчет МЭА 2018 г. +---------+--------------------+-----+ | Уровень 4 | Регион МЭА Уровень 1 | Сумма | +---------+--------------------+-----+ | 12 000 | Развитые экономики | 62 | | 11 000 | Развитые экономики | 9 | | 31 100 | Развитые экономики | 5 | +---------+--------------------+-----+ Проблема: При выполнении приведенного ниже кода я получаю неверный результат, где суммы не соответствуют ожидаемым значениям:
+---------+--------------------+-----+ | Уровень 4 | Регион МЭА Уровень 1 | Сумма | +---------+--------------------+-----+ | 12 000 | Развитые экономики | 61 | | 11 000 | Развитые экономики | 8 | | 31 100 | Развитые экономики | 4 | +---------+--------------------+-----+ Примечание: В настоящее время я тестирую этот код с меньшим фрагментом данных (как в примере здесь). Однако цель состоит в том, чтобы провести это с гораздо большим набором данных. В этом случае в столбце региона есть только одна запись, тогда как в основном наборе данных их больше.
Код:
scen_name = "IEA" scen_reg_out_dict={} год_список_2 = [2018,2019,2020,2021] для год_вар в год_список_2: scen_reg_out_dict[str(year_var) + " " + scen_name] = testoutput2.groupby(['Level 4','Region IEA Level 1'])[str(year_var) + " " + scen_name].agg(['sum'] ).astype('int64') Вопрос: Что может быть причиной сбоя расчета?
Мобильная версия