Mark Febrizio
Documentation (#24)
fe4f734 unverified
from pandas import DataFrame
def _get_nested_metadata(metadata_key: str, metadata: dict[dict], metadata_value: str):
"""Get nested metadata from `dict[dict, Any]` structure.
Returns "metadata_key" as default value.
"""
getter = metadata.get(metadata_key, {})
return getter.get(metadata_value, metadata_key)
def get_agency_metadata_values(
df: DataFrame,
agency_column: str,
metadata: dict,
metadata_value: str,
):
"""Get a specific value from agency metadata (e.g., get acronym for Department of Homeland Security).
Args:
df (DataFrame): Input data.
agency_column (str): Column containing agency identifier.
metadata (dict): Agency metadata.
metadata_value (str): Value of interest from agency metadata.
Returns:
pd.Series: Pandas Series of new values for adding to DataFrame.
"""
if metadata_value == "acronym":
metadata_value = "short_name"
return df.loc[:, agency_column].apply(
lambda x: [
_get_nested_metadata(x_item, metadata=metadata, metadata_value=metadata_value)
for x_item
in x
] if isinstance(x, list) else _get_nested_metadata(x, metadata=metadata, metadata_value=metadata_value)
)