Skip to content

graflo.util.data_normalize

Normalize tabular input into document rows.

normalize_rows(data, columns=None)

Normalize resource data into a list of dictionaries.

Source code in graflo/util/data_normalize.py
def normalize_rows(
    data: pd.DataFrame | list[list] | list[dict], columns: list[str] | None = None
) -> list[dict]:
    """Normalize resource data into a list of dictionaries."""
    if isinstance(data, pd.DataFrame):
        columns = data.columns.tolist()
        _data = data.values.tolist()
    elif data and isinstance(data[0], list):
        _data = cast(list[list], data)
        if columns is None:
            raise ValueError("columns should be set")
    else:
        return cast(list[dict], data)
    return [{k: v for k, v in zip(columns, item)} for item in _data]