Tengo 2 geodataframes; uno hecho de polígonos (bldg_res_df
) y otro de puntos de centroide (parcel_res_df
). Usé .concat
para combinarlos en un único geodataframe y hacer algunos cálculos.
df_list = [bldg_res_df, parcel_res_df]
combined_df = gpd.GeoDataFrame(pd.concat(df_list, sort=True))
Resumí ciertas columnas basadas en una columna compartida (GEOID
) entre ambos gdf's.
geoid_sum = combined_df[[ 'GEOID', 'bldg_sqft', 'CensusPop']]
geoid_sum = geoid_sum.groupby('GEOID').agg({'GEOID': 'count', 'bldg_sqft': 'sum', 'CensusPop': 'mean'}).reindex(combined_df['GEOID'])
Luego hice mis cálculos y llené previamente columnas vacías (Pop_By_Area
, Tot_Bldg_Sqft
, y Census_Bld_Units
) con los resultados.
combined_df['Pop_By_Area'] = (geoid_sum['CensusPop'].values *
combined_df['bldg_sqft'])/geoid_sum['bldg_sqft'].values
combined_df['Tot_Bldg_Sqft'] = geoid_sum['bldg_sqft'].values
combined_df['Census_Bld_Units'] = geoid_sum['GEOID'].values
Ahora lo que quiero hacer es llenar los geodataframes individuales con los valores recién calculados para la fila correspondiente. O, dividir el combine_df
en 2 geodataframes
basados en el tipo de geometría (polígonos, puntos). ¿Cuál es la manera más fácil de lograr esto?