Source code for draugr.pandas_utilities.from_dict

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

__author__ = "Christian Heider Nielsen"
__doc__ = r"""

           Created on 25-05-2021
           """

import pandas

__all__ = [
    "nested_dict_to_two_level_column_df",
    "nested_dict_to_four_level_column_df",
    "nested_dict_to_three_level_column_df",
]


[docs]def nested_dict_to_two_level_column_df(df): # TODO: MAKE ANY LEVEL! """ :param df: :return: """ cols, data = [], [] index = None for k, v in df.items(): if not isinstance(v, dict): cols.append((k, 0)) data.append(v) else: for k2, v2 in v.items(): cols.append((k, k2)) data.append(v2) if index is None: index = v2.index return pandas.DataFrame( list(zip(*data)), columns=pandas.MultiIndex.from_tuples(cols), index=index )
[docs]def nested_dict_to_three_level_column_df(df): # TODO: MAKE ANY LEVEL! """ :param df: :return: """ cols, data = [], [] index = None for k, v in df.items(): for k2, v2 in v.items(): for k3, v3 in v2.items(): cols.append((k, k2, k3)) data.append(v3) if index is None: index = v3.index return pandas.DataFrame( list(zip(*data)), columns=pandas.MultiIndex.from_tuples(cols), index=index )
[docs]def nested_dict_to_four_level_column_df(df): # TODO: MAKE ANY LEVEL! """ :param df: :return: """ cols, data = [], [] index = None for k, v in df.items(): for k2, v2 in v.items(): for k3, v3 in v2.items(): for k4, v4 in v3.items(): cols.append((k, k2, k3, k4)) data.append(v4) if index is None: index = v4.index return pandas.DataFrame( list(zip(*data)), columns=pandas.MultiIndex.from_tuples(cols), index=index )