python-3.x - 在 geopandas 上应用多个聚合函数
问题描述
在 geopandas 地理数据框中应用多个聚合函数而不是溶解函数时,我面临着严重的困难。
尽管该操作确实有效,但生成的地理数据框列被结构化为单个元组。如果它是在 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 的方法?
我感谢你的时间,
您忠诚的,
菲利普·里尔
解决方案
pd.MultiIndex.from_tuples 应该与您的列结构一起使用,问题是非元组几何列。我想在手动构建多索引时有一种方法可以包含几何列,但为简单起见,我只是删除了它。如果您仍然需要它,只需重新附加几何列。
df = df.drop('geometry', axis=1)
df.columns = pd.MultiIndex.from_tuples(df.columns)
df = df.swaplevel(axis=1)
推荐阅读
- python - 如何在输出文件中返回输入文件的每个第 k 个元素?
- python - 从 DF1 中选择行,其中列值与 DF2 中的列中的值匹配
- deployment - 将 DNS 域指向 Linode 服务器后,Sendgrid 电子邮件中的链接不起作用
- r - 基于时间戳合并数据集
- javascript - 刷新时的VueJs没有运行axios
- java - 上传到本地 WebDav - spring boot
- python - 如何删除表格标题中的空行和 sphinx_rtd_theme 中的多行单元格?
- firebase - 上传到 Firebase 存储后如何下载 PDF 文件,并在 Flutter 应用程序中显示并保持静态
- dependency-injection - Eager loading GRPC Endpoints in ASP.net Core 3.1
- typescript - KeysOfType 和确切的属性类型