在循环遍历列表和字典的循环中创建数据框

时间:2020-01-24 08:50:53

标签: pandas list loops dictionary

我正在尝试构建一个迭代器,该迭代器一次构建一个DataFrame,其中包括有序词典列表的每个元素。

代码的第一部分,我开发了一个函数来展平列表“ list_2”中的层次结构有序字典。每个“列表_2”是列表“列表_1”内的一个列表。

在第二部分中,我将“ list_2”中的每个拼合字典作为一行包含在数据框中,然后,当第一组拼合字典结束时,我将结果分配给“ first_df”。

第三部分重复第二部分的过程,将“ list_2”中的第二组扁平化字典分配给“ second_df·”。

我的目标是实现一种高效且自动的方式,将n组扁平化字典分配给n个数据帧。

预先感谢您的帮助。

from collections import OrderedDict
import pandas as pd


def flatten_dict(d):
    def items():
        for key, value in d.items():
            if isinstance(value, dict):
                for subkey, subvalue in flatten_dict(value).items():
                    yield key + "." + subkey, subvalue
            else:
                yield key, value

    return OrderedDict(items())

df2=pd.DataFrame()
m=0
z=1
w=1
for list_2 in list_1[m:z]:
    for elem in list_2:
        dict_flattened = flatten_dict(elem)
        df = pd.DataFrame.from_dict(dict_flattened,'index').transpose()
        df2 = pd.concat([df, df2],ignore_index = True)
        print(df2.shape)
first_df = df2


m+=w
z+=w
df2=pd.DataFrame()
for list_2 in list_1[m:z]:
    for elem in list_2:
        dict_flattened = flatten_dict(elem)
        df = pd.DataFrame.from_dict(dict_flattened,'index').transpose()
        df2 = pd.concat([df, df2],ignore_index = True)
        print(df2.shape)
second_df = df2

0 个答案:

没有答案