Python-pandas read_excel obteniendo numbers incorrectos para index_col

Estoy tratando de leer un file .xlsx que tiene 4 hojas cada una con una columna de Tiempo y Absorbancia como a continuación:

Time Absorbance 0 0.1254 5 0.1278 10 0.128 15 0.1286 20 0.1303 25 0.1295 30 0.1296 35 0.1308 40 0.1301 45 0.1301 50 0.1309 ... 

Quiero hacer un DataFrame con cada hoja como una columna diferente y la hora como el índice de fila actualmente mi código es el siguiente:

 import numpy as np import pandas as pd, datetime as dt import glob, os runDir = "/Users/AaronT/Documents/Lab/Cascade/DTRA" if os.getcwd() != runDir: os.chdir(runDir) files = glob.glob("PTE_Kinetics*.xlsx") df = pd.DataFrame() for each in files: sheets = pd.ExcelFile(each).sheet_names for sheet in sheets: df[sheet] = pd.read_excel(each, sheet, index_col='Time') print df 

Sin embargo, mi salida no tiene los valores adecuados para el índice de fila:

  Forced Wash Elution Wash Flow Through 0 0.1254 -0.0062 0.0544 0.0443 1 NaN NaN NaN NaN 2 NaN NaN NaN NaN 3 NaN NaN NaN NaN 4 NaN NaN NaN NaN 5 0.1278 -0.0027 0.0560 0.0459 6 NaN NaN NaN NaN 7 NaN NaN NaN NaN 8 NaN NaN NaN NaN 9 NaN NaN NaN NaN 10 0.1280 -0.0004 0.0564 0.0467 11 NaN NaN NaN NaN 12 NaN NaN NaN NaN 13 NaN NaN NaN NaN 14 NaN NaN NaN NaN ... 

Tal vez no entiendo cómo funciona index_col, pude hacer un DataFrame separado para cada hoja con los times adecuados, pero preferiría que todos estuvieran en el mismo. ¿Alguna sugerencia?

Editar: Aquí hay un enlace al file de Excel .

Nota: cada hoja se lee correctamente, simplemente no las está pegando correctamente:

 In [11]: for sheet in e.sheet_names: print(pd.read_excel("PTE_Kinetics_04-30-2015.xlsx", sheet, index_col='Time').head(3)) Absorbance Time 0 0.1254 5 0.1278 10 0.1280 Absorbance Time 0 -0.0062 5 -0.0027 10 -0.0004 Absorbance Time 0 0.0544 5 0.0560 10 0.0564 Absorbance Time 0 0.0443 5 0.0459 10 0.0467 

En lugar de como un DataFrame, preferiría extraerlos en un dict:

 d = {} for sheet in e.sheet_names: d[sheet] = pd.read_excel("PTE_Kinetics_04-30-2015.xlsx", sheet, index_col='Time').head(3) 

Ahora puedes pegarlos (sin preocuparte por la excelencia):

 In [21]: pd.concat(d).unstack(0) Out[21]: Absorbance Elution Flow Through Forced Wash Wash Time 0 -0.0062 0.0443 0.1254 0.0544 5 -0.0027 0.0459 0.1278 0.0560 10 -0.0004 0.0467 0.1280 0.0564 

Solo tiene que configurarlo como columna de "time" como índice:

 In [5]: df= pd.ExcelFile('PTE_Kinetics_04-30-2015.xlsx') In [7]: sh = df.parse('Forced Wash') In [8]: sh.head() Out[8]: Time Absorbance 0 0 0.1254 1 5 0.1278 2 10 0.1280 3 15 0.1286 4 20 0.1303 In [9]: sh.set_index('Time').head() Out[9]: Absorbance Time 0 0.1254 5 0.1278 10 0.1280 15 0.1286 20 0.1303 

O bien, pase index_col con el nombre de la columna.

 In [12]: df.parse(i, index_col='Time').head() Out[12]: Absorbance Time 0 0.0443 5 0.0459 10 0.0467 15 0.0474 20 0.0480 

Parece que estás bien encaminado con el rest del process.