提前感谢您的帮助。
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