Source code for streng.common.io.lists_and_dicts_and_pandas_etc

"""
module to deal with lists, dictionaries and pandas

| dol: dict of lists
| lod: list of dicts
| pddf: pandas dataframe

    .. uml::

        class lists_and_dicts_and_pandas_etc <<(M,#FF7700)>> {
        .. functions ..
        + convert_lod_to_dol(list_of_dicts)
        + convert_dol_to_lod(dict_of_lists)
        + convert_lod_to_md_table(list_of_dicts)
        + convert_lod_to_pddf(list_of_dicts)
        + convert_dict_to_quantity_value(dict)
        }



"""

from tabulate import tabulate
import pandas as pd


[docs]def convert_lod_to_dol(list_of_dicts): """ converts list of dicts --> dict of lists """ _dol = {k: [dic[k] for dic in list_of_dicts] for k in list_of_dicts[0]} return _dol
[docs]def convert_dol_to_lod(dict_of_lists): """ converts dict of lists --> list of dicts """ _lod = [dict(zip(dict_of_lists, t)) for t in zip(*dict_of_lists.values())] return _lod
[docs]def convert_lod_to_md_table(list_of_dicts, table_format="pipe", float_fmt=".3E"): ftm_tbl = tabulate(list_of_dicts, headers='keys', tablefmt=table_format, floatfmt=float_fmt) return ftm_tbl
[docs]def convert_lod_to_pddf(list_of_dicts): """ Converts a list of dictionaries to a pandas dataframe Args: list_of_dicts: a list of dictionaries Returns: pandas.DataFrame: """ return pd.DataFrame(list_of_dicts, columns=[*list_of_dicts[0]])
[docs]def convert_dict_to_quantity_value(dict): """ Args: dict (dict): a dictionary Returns: list: a list of dicts with quantity-value pairs """ return [{'quantity': k, 'value': dict[k]} for k in dict]