fromitem.utilimportconvert_units#: iTEM data flow matching the data from this source.DATAFLOW="EMISSIONS"#: Dimensions and attributes which do not vary across this data set.COMMON_DIMS=dict(source="JRC",variable="Emissions",pollutant="CO2",lca_scope="TTW",service="_T",vehicle="_T",fuel="_T",technology="_T",)#: Columns to drop from the raw data.COLUMNS=dict(drop=["IPCC_description","IPCC-Annex","Name","World Region"],)#: Map from IPCC emissions category codes to iTEM ``CL_MODE`` values. The actual#: descriptions appear in the ``IPCC_description`` column, which is discarded.#:#: - 1.A.3.a: Civil Aviation#: - 1.A.3.b: Road Transportation#: - 1.A.3.c: Railways#: - 1.A.3.d: Water-borne Navigation#: - 1.A.3.e: Other TransportationMAP_MODE={"1.A.3.a":"Air","1.A.3.b":"Road","1.A.3.c":"Rail","1.A.3.d":"Water","1.A.3.e":"Other",}
[docs]defprocess(df):"""Process T005. 1. Select only measures with IDs beginning "1.A.3". 2. Map from the IPCC emissions category (e.g. "1.A.3.a") to mode (e.g. "Air"); see :func:`map_mode`. 3. Melt from wide to long format. 4. Drop NA values. 5. Use “_X” (not allocated/unspecified) as the region for international shipping and aviation. 6. Convert from Mt/a to Gt/a. """return(df[df["IPCC"].str.startswith("1.A.3")].assign(MODE=lambdadf_:df_["IPCC"].apply(MAP_MODE.get)).drop(columns=["IPCC"]).melt(id_vars=["ISO_A3","MODE"],var_name="TIME_PERIOD",value_name="VALUE").dropna(subset=["VALUE"]).rename(columns={"ISO_A3":"REF_AREA"}).replace({"REF_AREA":{"SEA":"_X","AIR":"_X"}}).pipe(convert_units,"megatonne / year","gigatonne / year"))