Применение нескольких функций агрегирования над геопандами - PullRequest
1 голос
/ 10 мая 2019

Я сталкиваюсь с серьезными трудностями в применении нескольких функций агрегирования к функции растворения в геоданных в геопандах.

Несмотря на то, что операция работает, результирующие столбцы геоданных в структуре структурируются как одиночные кортежи.Если бы он был структурирован в структуре pandas multiIndex.from_tuples, с моим анализом не возникло бы никаких проблем.Поскольку это всего лишь последовательность кортежей, я не могу правильно работать с геоданными после операции агрегирования.

Вот фрагмент кода, чтобы представить мою точку зрения.

Данный GeoDataFrame содержит несколькостолбцы следующим образом:

['GEOCODE_4', 'Datetime', 'geometry', 'Precipitacao_1000m', 'COD_UF','COD_MUNIC', 'POP', 'POP_Esperada', 'HAV', 'Incidencia','Incidencia_10_3e', 'Year']

В моем исследовании я пытаюсь оценить агрегированные «среднее» и «сумма» этих переменных выше.В связи с этим я использую функцию растворения из геоданных, как показано ниже.


# Initial geodataframe (refered as GDF):

GDF_temporal_reduced = GDF.dissolve(by='GEOCODE_4', aggfunc=['sum', 'mean'])

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


# GDF_temporal_reduced.columns 

    # returns the following index:

['geometry',  
('Precipitacao_1000m', 'sum'),     ('Precipitacao_1000m', 'mean'),
('COD_UF', 'sum'),                 ('COD_UF', 'mean'),
('COD_MUNIC', 'sum'),              ('COD_MUNIC', 'mean'),
('POP', 'sum'),                    ('POP', 'mean'),
('POP_Esperada', 'sum'),           ('POP_Esperada', 'mean'),  
('HAV', 'sum'),                    ('HAV', 'mean'),
('Incidencia', 'sum'),             ('Incidencia', 'mean'),
('Incidencia_10_3e', 'sum'),       ('Incidencia_10_3e', 'mean'),
('Year', 'sum'),                   ('Year', 'mean')] 

Вот как выглядит мой GDF:

GDF after reduction

Как только эти столбцы теперь в Tuple, а не точно в многоиндексной форме, я могунеправильно фильтровать их после всей операции.

Кто-нибудь знает способ получения уменьшенного GDF, как показано ниже?

Desired reduced GDF

Благодарю вас за ваше время,

С уважением,

Филипп Леал

1 Ответ

1 голос
/ 11 мая 2019

pd.MultiIndex.from_tuples должен работать с вашей структурой столбцов, проблема заключается в столбце с геометрией без кортежей.Я предполагаю, что есть способ включить столбец геометрии при построении мультииндекса вручную, но для простоты я просто отбросил его.Просто подключите столбец геометрии, если он вам все еще нужен.

df = df.drop('geometry', axis=1)
df.columns = pd.MultiIndex.from_tuples(df.columns)
df = df.swaplevel(axis=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...