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

问题描述 投票:1回答:1

我有一个嵌套的词典,包含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
python pandas concat
1个回答
0
投票

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

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
© www.soinside.com 2019 - 2024. All rights reserved.