Why my PanelND factory throwing a KeyError?

后端 未结 1 691
花落未央
花落未央 2021-01-13 05:50

I\'m using Pandas version 0.12.0 on Ubuntu 13.04. I\'m trying to create a 5D panel object to contain some EEG data split by condition.

Ho

相关标签:
1条回答
  • 2021-01-13 06:19

    Working example. You needed to specify the mapping of your axes to the internal axes names via the slices. This fiddles with the internal structure, but the fixed names of pandas still exist (and are somewhat hardcoded via Panel/Panel4D), so you need to provide the mapping.

    I would create a Panel4D first, then your Subject as I did below.

    Pls post on github / here if you find more bugs. This is not a heavily used feature.

    Output

    <class 'pandas.core.panelnd.Subject'>
    Dimensions: 3 (setsize) x 1 (location) x 1 (vfield) x 10 (channels) x 2 (samples)
    Setsize axis: level0_0 to level0_2
    Location axis: level1_0 to level1_0
    Vfield axis: level2_0 to level2_0
    Channels axis: level3_0 to level3_9
    Samples axis: level4_1 to level4_2
    

    Code

    import pandas as pd
    import numpy as np
    from pandas.core import panelnd
    
    Subject = panelnd.create_nd_panel_factory(
        klass_name='Subject',
        axis_orders=['setsize', 'location', 'vfield', 'channels', 'samples'],
        axis_slices={'location' : 'labels',
                     'vfield' : 'items',
                     'channels' : 'major_axis',
                     'samples': 'minor_axis'},
        slicer=pd.Panel4D,
        axis_aliases={'ss': 'setsize',
                      'loc': 'labels',
                      'vf': 'items',
                      'major': 'major_axis',
                      'minor': 'minor_axis'})
    
    
    subjects = dict()
    for i in range(3):
        eeg = pd.DataFrame(np.random.randn(10,2),columns=['level4_1','level4_2'],index=[ "level3_%s" % x for x in range(10)])
    
        loc, vf = ('level1_0','level2_0')
        subjects["level0_%s" % i] = pd.Panel4D({ loc : { vf : eeg }})
    
    print Subject(subjects)
    
    0 讨论(0)
提交回复
热议问题