用3.0中的多索引数据框架模拟Python 2.0 pandas面板



提前感谢您的帮助。

dictionary =
{'A':          'a'     'b'           
Date                                                   
1997-09-11  1060  1071    
1997-09-12  1060  1078       
....
'B':          'a'     'b'                
Date                                                          
1997-09-11  2900  2931      
1997-09-12  2919  2954     
...}

对于Python 2,我创建pandas面板:

dataPanel = pd.Panel.from_dict(dictionary, intersect=False, orient='minor')

分配全局变量。

c = dataPanel.a
d = dataPanel.b

定义公式。

cd = c - d

创建df:

df= pd.DataFrame(pd.concat([cd], join='outer', axis = 1))
df
Date         'A'    'B'
1997-09-11   11     31      
1999-09-12   18    -35 

挑战在于用3.0中的多索引数据框架重新创建pandas Panel环境。我尝试了很多事情,但似乎都做不到。

例如,嵌套dict到数据帧,然后到多索引数据帧:

df= {k: pd.DataFrame(v) for k,v in stockDataDict.items()}
df = pd.concat(stockDataDict, axis=1) 
df.index
DatetimeIndex(['1997-09-11', '1997-09-12',
...
'1999-07-01', '1999-07-02'],
dtype='datetime64[ns]', name='Date', length=4, freq=None)

创建多索引

idf = pd.MultiIndex.from_frame(df)
idf
MultiIndex([( 1060,  1071),
( 1060,  1078),
( 2900,  2931),   
( 2919,  2954)],
names=[('A', 'a'), ('A', 'b'), ('B', 'a'), ('B', 'b')], length=4)

我的感觉是,我错误地将索引/和/或列名从dictionary传递到df,从而消除了获得正确idf的机会。

两个目标:

将多索引名称分解为say('A'(、('B'(、

c = idf.a
d = idf.b
cd - c-d

获取:

Date         'A'    'B'
1997-09-11   11     31      
1999-09-12   18    -35 

再次感谢您的帮助。

我想我做对了。

排列数据帧的嵌套dict。

dict_of_df = {k: pd.DataFrame(v) for k,v in stockDataDict.items()}
df = pd.concat(stockDataDict, axis=0)
df
Open        Close   
Date                            
ES  
1997-09-11  1060.750    1071.750    
1997-09-12  1060.000    1078.500    

名称索引:

df = df.rename_axis(['Symbol','Date'])

创建数据帧:

df = pd.DataFrame(df)

分配变量:

o = df.Open
c = df.Close

创建系列和公式:

zs = (c-o)

非堆叠数据帧(主要线索!(

df1 = zs.unstack(level=0) 
df1
Symbol                ES
Date
1997-09-11            11.5
1997-09-12           -18.5

最新更新