首页 > 解决方案 > 如何为多级字典进行不同的连接 - python

问题描述

我有一个名为的多级字典mydict,看起来像下面的字典,我正在尝试进行连接,为字典的每个键提供不同的数据框。

mydict -> {agent_1: {step1: {...}, step2: {...}, step3: {...}}, ...}

我可以用下面的代码做到这一点,但这意味着手工完成,我正在处理大数据。

boo  = pd.DataFrame.from_dict(mydict[agent_1]['step_1'])
boo1 = pd.DataFrame.from_dict(mydict[agent_1]['step_2'])
boo2 = pd.DataFrame.from_dict(mydict[agent_1]['step_3'])
boo3 = pd.DataFrame.from_dict(mydict[agent_1]['step_4'])

boo_tot = pd.concat([boo, boo1, boo2, boo3])

我也很难自动化这个,因为step每个key. mydict例如,假设agent_1有 4 个步骤,而agent_2只有 3 个步骤。我尝试遵循这个stackoverflow 接受的答案中给出的内容,但它不适用于我的情况。

正如您在下面看到的,这种方法给了我一个数据帧,并且每个数据帧的所有值step(=etape在下面的 df 中)每次都在一行中,而我希望每个agent带有pcc,time和as 列的不同数据帧route_typemode它们的值打印在另一排下为每个step

在此处输入图像描述

这是我希望得到的:

For agent_1:

    mode    pcc     time    route_type  etape    id
0   TC      data1   time1   data1       etape_0  NaN
1   TC      data2   time2   data2       etape_0  NaN
2   TC      data3   time3   data3       etape_0  NaN
3   TC      data4   time4   data4       etape_0  NaN
... ...     ...     ...     ...         ...      ...
16  MAP     data16  time16  data16      etape_1  NaN
17  MAP     data17  time17  data17      etape_1  NaN
18  MAP     data18  time18  data18      etape_1  NaN
19  MAP     data19  time19  data19      etape_1  NaN
... ...     ...     ...     ...         ...      ...

And then I'd get a second dataframe for agent_2, a third for agent_3 etc.

我找不到获得我想要的东西的方法,不幸的是我关于这个主题的词汇量非常有限,因为我不经常使用多级字典。关于此事的任何提示都会有很大帮助。

标签: pythondictionaryconcatenation

解决方案


推荐阅读