Python 在Pandas中解析多索引Excel文件
我有一个带有三级列多索引的时间序列excel文件,如果可能的话,我想成功解析它。关于如何对堆栈溢出上的索引执行此操作(而不是对列执行此操作)有一些结果,Python 在Pandas中解析多索引Excel文件,python,excel,parsing,pandas,time-series,Python,Excel,Parsing,Pandas,Time Series,我有一个带有三级列多索引的时间序列excel文件,如果可能的话,我想成功解析它。关于如何对堆栈溢出上的索引执行此操作(而不是对列执行此操作)有一些结果,parse函数有一个header,它似乎不包含行列表 Excel文件如下所示: A列是从A4开始的所有时间序列日期 B列有顶层1(B1)中层1(B2)底层1(B3)数据(B4-B100+) 列C具有空(C1)空(C2)低_级别2(C3)数据(C4-C100+) D列有空(D1)中间级别2(D2)低级别1(D3)数据(D4-D100+) 列E具有
parse
函数有一个header
,它似乎不包含行列表
Excel文件如下所示:
- A列是从A4开始的所有时间序列日期
- B列有顶层1(B1)中层1(B2)底层1(B3)数据(B4-B100+)
- 列C具有空(C1)空(C2)低_级别2(C3)数据(C4-C100+)
- D列有空(D1)中间级别2(D2)低级别1(D3)数据(D4-D100+)
- 列E具有空(E1)空(E2)低级别2(E3)数据(E4-E100+)
low_-level
值许多mid_-level
值和一些top_-level
值,但技巧是top和mid-level值为null,并假定为左侧的值。因此,例如,上面的所有列都将top_level1作为顶部多索引值
到目前为止,我最好的想法是使用
转置
,但它将未命名:#
填充到所有地方,并且似乎不起作用。在Pandas 0.13read_csv
中,似乎有一个可以获取列表的标题
参数,但这似乎不适用于解析
,您可以填充空值。我没有你的文件,但你可以测试
#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)]
如果能得到一些支持率较低的选民的评论,我会很有帮助,这样我就知道下次该如何用不同的方式来表达这个问题了。谢谢header=None
是我在这里缺少的,因为这避免了允许水平填充的多个Unnamed
列名。做得好。