【问题标题】:Pandas dataframe of dataframes with hierarchical columns具有分层列的数据框的 Pandas 数据框
【发布时间】:2018-07-13 16:46:17
【问题描述】:

我有一个在 pandas 中创建的分层数据框:

import pandas as pd
import numpy as np
col_index = pd.MultiIndex.from_product([[0,1], ['a', 'b', 'c']])
df_outer = pd.DataFrame(index=range(4), columns=col_index)
print(df_outer)

     0              1          
     a    b    c    a    b    c
 0  NaN  NaN  NaN  NaN  NaN  NaN
 1  NaN  NaN  NaN  NaN  NaN  NaN
 2  NaN  NaN  NaN  NaN  NaN  NaN
 3  NaN  NaN  NaN  NaN  NaN  NaN

我想知道是否可以用另一个数据框填充此数据框中的每个条目,例如:

inner_names = ['w', 'x', 'y', 'z']
df_inner = pd.DataFrame(np.random.randn(4,4), index=inner_names, columns=inner_names)

如果这是一个坏主意,那么创建一些其他易于索引的数据结构(包含我想放入 df_outer 的元素中的数据帧)的更好方法是什么?

【问题讨论】:

    标签: python pandas dataframe multidimensional-array hierarchical-data


    【解决方案1】:

    这有点疯狂,因为在列中需要 3 个级别,在索引中需要 2 个级别,然后通过选择 slicers 进行分配:

    np.random.seed(452)
    
    col_index = pd.MultiIndex.from_product([[0,1], ['a', 'b', 'c'], ['w', 'x']])
    idx = pd.MultiIndex.from_product([range(2), ['w', 'x']])
    df_outer = pd.DataFrame(columns=col_index, index=idx)
    print(df_outer)
           0                             1                         
           a         b         c         a         b         c     
           w    x    w    x    w    x    w    x    w    x    w    x
    0 w  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
      x  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
    1 w  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
      x  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
    
    inner_names = ['w', 'x']
    df_inner = pd.DataFrame(np.random.randn(2,2), index=inner_names, columns=inner_names)
    print(df_inner)
              w         x
    w -0.182421  0.962712
    x -0.118524 -0.784380
    
    idx = pd.IndexSlice
    df_outer.loc[idx[0,:], idx[0, 'a', :]]= df_inner.values
    print(df_outer)
                0                                  1                         
                a              b         c         a         b         c     
                w         x    w    x    w    x    w    x    w    x    w    x
    0 w -0.182421  0.962712  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
      x -0.118524  -0.78438  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
    1 w       NaN       NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
      x       NaN       NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
    

    【讨论】:

    • 这当然适用于内部数据帧都是相同维度的受限情况。幸运的是,我的特定应用程序就是这种情况。当内部数据框的尺寸不同时,这似乎不容易做到。
    猜你喜欢
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    相关资源
    最近更新 更多