python pandas read_excel获取错误的索引数字_

2024-10-01 15:37:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着读一个.xlsx文件,它有4张纸,每张纸都有一个时间和吸光度列,如下所示:

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
...

我想制作一个DataFrame,每个工作表作为不同的列,时间作为行索引当前我的代码如下:

^{pr2}$

但是,我的输出没有行索引的正确值:

     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
...

也许我不明白索引栏是如何工作的,我可以在适当的时间为每个工作表创建一个单独的数据帧,但我希望它们都在同一个表上。有什么建议吗?在

编辑:这里有一个指向excel file的链接。在


Tags: 文件代码dataframetime时间nanxlsxflow
2条回答

只需将其设置为“时间”列作为索引:

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

或者,用列名传递index_col。在

^{pr2}$

看来你对剩下的工作进展顺利。在

注意:每一页都能正确阅读,只是没有把它们粘好:

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

我宁愿将它们提取到dict中,而不是作为一个数据帧:

^{pr2}$

现在你可以把它们粘在一起(不用担心excel):

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

相关问题 更多 >

    热门问题