【问题标题】:Set specific multiindex from scratch从头开始设置特定的多索引
【发布时间】:2020-03-13 15:43:39
【问题描述】:

我的任务如下:我需要从头开始以数据框的形式构建几个表。特别是,对于每个标识符,每个表总是相同的(一种汇总统计表)。例如:

 result= {'Value':[mean_t,mean_t_1,mean_diff_lev, mean_diff_log],
             'T-stat':[np.NaN,np.NaN,t_diff_lev, t_diff_log],
             'Type':['XL','XL','XL', 'XL']}
 result=pd.DataFrame.from_dict(result,orient='index',
                                  columns=['Square_t','Square_t_1',
                                           'Mean diff','Mean diff log'])

结果给了我这个:

        Square_t Square_t_1 Mean diff Mean diff log
Value   502.123    533.324  -31.2018    -0.0567523
T-stat      NaN        NaN  -3.33098      -5.38749
Type         XL         XL        XL            XL

我有一个函数可以计算那里使用的所有值,最后它从值字典创建上面给出的数据框。我需要能够设置一个由两个组件组成的多索引:第一个(或外部)一个是标识符(比如“Roger”),第二个(或内部)是由我已经拥有的,即列表@ 987654323@。结果应如下所示:

             Square_t Square_t_1 Mean diff Mean diff log
Roger Value   502.123    533.324  -31.2018    -0.0567523
      T-stat      NaN        NaN  -3.33098      -5.38749
      Type         XL         XL        XL            XL

或者这个:

ID    Var      Square_t Square_t_1 Mean diff Mean diff log
Roger Value     502.123    533.324  -31.2018    -0.0567523
      T-stat        NaN        NaN  -3.33098      -5.38749
      Type           XL         XL        XL            XL

然后,目标是能够通过附加或连接具有不同 ID 的不同数据帧来构建更大的数据帧。

【问题讨论】:

    标签: dataframe indexing multi-index


    【解决方案1】:

    我自己找到了答案。最简单的方法是使用 pandas 方法concat。 与其为每个 ID 创建一个具有多索引的数据帧,不如为每个 ID 创建一个没有 ID 的数据帧,创建所有数据帧,并且在跟踪列表中的各种 ID 之后,我们可以简单地连接所有单个 ID数据框。假设我们有两个数据框 df1,df2the 类型:

            Square_t Square_t_1 Mean diff Mean diff log
    Value   502.123    533.324  -31.2018    -0.0567523
    T-stat      NaN        NaN  -3.33098      -5.38749
    Type         XL         XL        XL            XL
    

    对于 ID ['Roger','Kyle']。我们运行:

    pd.concat([df1,df2],keys=['Roger','Kyle'])
    

    结果确实是一个多索引数据框:

                  Square_t Square_t_1 Mean diff Mean diff log
    Roger  Value   430.855    454.733  -23.8778    -0.0492182
           T-stat      NaN        NaN  -3.48394      -5.37168
           Type         XL         XL        XL            XL
    Kyle   Value   721.824     735.67   -13.846    -0.0192327
           T-stat      NaN        NaN  -1.93132      -2.74519
           Type         XL         XL        XL            XL
    
    pd.concat([df1,df2],keys=['Roger','Kyle']),index
    
    MultiIndex([('Roger',  'Value'),
                ('Roger', 'T-stat'),
                ('Roger',  'Type'),
                ( 'Kyle',  'Value'),
                ( 'Kyle', 'T-stat'),
                ( 'Kyle',  'Type')],
               )
    

    【讨论】:

      猜你喜欢
      • 2017-04-24
      • 2016-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-26
      • 1970-01-01
      相关资源
      最近更新 更多