Pandas 来自嵌套字典的数据框将字典键添加到自己的列

Pandas dataframe from nested dictionary adding dict key to own column

我有一个包含 10,000 多个帐户的嵌套字典。我需要一个强大的解决方案。下面是一个需要缩放到n的例子。

以 acct # 为键的嵌套字典如下所示:

 {'Acct301':                     
                  ds         trend      yhat         y
 0   2018-05-01 00:00:00  1.268612    0.679369    2.554900       
 1   2018-05-01 01:00:00  1.268372    0.089233    2.022369      
 2   2018-05-01 02:00:00  1.268132   -0.256185    1.640524    

 [744 rows x 19 columns],

'Acct2':        
          ds                trend       yhat          y  
 0   2018-05-01 00:00:00  0.575119   -0.456240    1.26193       
 1   2018-05-01 01:00:00  0.575140   -0.687562    1.033594       
 2   2018-05-01 02:00:00  0.575161   -0.795286    0.906530  
[744 rows x 19 columns]}

我需要数据框在其自己的列中包含帐户#。

我尝试了以下代码:

df= pd.concat(dict.values(), ignore_index= True)

此输出几乎可以工作,但没有 Acct#,我得到以下信息:

             ds            trend       yhat         y  
 0  2018-05-01 00:00:00  1.268612    0.679369    2.554900        
 1  2018-05-01 01:00:00  1.268372    0.089233    2.022369
 2  2018-05-01 02:00:00  0.575161   -0.795286    0.906530 
 3  2018-05-01 00:00:00  0.575119   -0.456240    1.26193       
 4  2018-05-01 01:00:00  0.575140   -0.687562    1.033594       
 5  2018-05-01 02:00:00  0.575161   -0.795286    0.906530  

我想要的输出如下所示

    Acct #          ds            trend       yhat         y  
 0   Acct1   2018-05-01 00:00:00  1.268612    0.679369    2.554900        
 1   Acct1   2018-05-01 01:00:00  1.268372    0.089233    2.022369
 2   Acct1   2018-05-01 02:00:00  0.575161   -0.795286    0.906530 
 3   Acct2   2018-05-01 00:00:00  0.575119   -0.456240    1.26193       
 4   Acct2   2018-05-01 01:00:00  0.575140   -0.687562    1.033594       
 5   Acct2   2018-05-01 02:00:00  0.575161   -0.795286    0.906530

假设字典是d。将 pd.concat 的选项 keys 与一些清理命令一起使用

df = (pd.concat(d.values(), keys=d.keys())
        .reset_index()
        .drop('level_1',1).rename(columns={'level_0': 'Acct#'}))

Out[207]:
   Acct#                   ds     trend      yhat         y
0  Acct1  2018-05-01 00:00:00  1.268612  0.679369  2.554900
1  Acct1  2018-05-01 01:00:00  1.268372  0.089233  2.022369
2  Acct1  2018-05-01 02:00:00  1.268132 -0.256185  1.640524
3  Acct2  2018-05-01 00:00:00  0.575119 -0.456240  1.261930
4  Acct2  2018-05-01 01:00:00  0.575140 -0.687562  1.033594
5  Acct2  2018-05-01 02:00:00  0.575161 -0.795286  0.906530