python - 在 Pandas 中解析多索引 Excel 文件

标签 python excel parsing pandas time-series

我有一个包含三级列 MultiIndex 的时间序列 excel 文件,如果可能的话我想成功解析它。关于如何对堆栈溢出的索引执行此操作的一些结果,但不是列和 parse函数有一个 header这似乎没有行列表。

ExcelFile 如下所示:

  • A列是从A4开始的所有时间序列日期
  • B 列有 top_level1 (B1) mid_level1 (B2) low_level1 (B3) 数据 (B4-B100+)
  • C 列有 null (C1) null (C2) low_level2 (C3) 数据 (C4-C100+)
  • D 列有空 (D1) mid_level2 (D2) low_level1 (D3) 数据 (D4-D100+)
  • E 列有 null (E1) null (E2) low_level2 (E3) 数据 (E4-E100+)
  • ...

所以有两个low_level值很多mid_level值(value)观和一些top_level值,但诀窍是顶层和中层值为空,并假定为左侧的值。因此,例如,上面的所有列都将 top_level1 作为最高的多索引值。

到目前为止,我最好的想法是使用 transpose , 但它填充 Unnamed: #无处不在,似乎不起作用。在 Pandas 0.13 read_csv似乎有一个 header可以接受列表的参数,但这似乎不适用于 parse .

最佳答案

您可以填充 空值。我没有你的文件,不过你可以测试一下

#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)] 

关于python - 在 Pandas 中解析多索引 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24147029/

相关文章:

excel - 如何使用大型 Excel 文件的 XSSF 和 SAX(事件 API)获取命名范围、工作表名称和引用公式的列表

Java XStream 无法解析类异常

python - 为什么 sys.getdefaultencoding() 与 sys.stdout.encoding 不同?这如何破坏 Unicode 字符串?

python - 递增列表值 Python 3

arrays - 使用数组将文本从一个工作表传递到另一个工作表

excel - 从 VBA 中的类模块中提取特定变量到标准模块

python - 使用 get_dummies 将分类值转换为数字?

python - 如何移动连续数字的行。 Python 3.3.2

C# - 我可以解析已经格式化为货币的文本吗?

javascript - 如何从 JavaScript 中的这个日期字符串解析年份?