在Pandas中parsing多索引Excel文件
我有一个三级列MultiIndex的时间序列Excel文件,我想成功parsing如果可能的话。 有一些关于如何做到这一点的堆栈溢出索引,但不是列和parse
函数有一个header
似乎没有行列表。
ExcelFile的外观如下所示:
- A列是从A4开始的所有时间序列date
- 列B具有top_level1(B1)mid_level1(B2)low_level1(B3)数据(B4-B100 +)
- 列C具有空(C1)空(C2)低级2(C3)数据(C4-C100 +)
- D列有空(D1)mid_level2(D2)low_level1(D3)数据(D4-D100 +)
- 列E具有空(E1)空(E2)low_level2(E3)数据(E4-E100 +)
- …
因此,有两个low_level
值,许多mid_level
值和一些top_level
值,但技巧是顶级和中级的值为空,并假定为左侧的值。 因此,例如,上面的所有列都将top_level1作为顶级多索引值。
到目前为止,我的最好的想法是使用transpose
,但它填补了Unnamed: #
无处不在,似乎没有工作。 在pandas0.13 read_csv
似乎有一个header
参数,可以采取一个列表,但这似乎并没有parse
。
你可以fillna
空值。 我没有你的文件,但你可以testing
#Headers as rows for now df = pd.read_excel(xls_file,0, header=None, index_col=0) #fill in Null values in "Headers" df = df.fillna(method='ffill', axis=1) #create multiindex column names df.columns=pd.MultiIndex.from_arrays(df[:3].values, names=['top','mid','low']) #Just name of index df.index.name='Date' #remove 3 rows which are already used as column names df = df[pd.notnull(df.index)]