Pandas:使用合并的单元格读取Excel

我有包含多个工作表的Excel文件,每个工作表看起来都像这样(但更长):

        Sample  CD4     CD8

Day 1 8311 17.3 6.44

8312 13.6 3.50

8321 19.8 5.88

8322 13.5 4.09

Day 2 8311 16.0 4.92

8312 5.67 2.28

8321 13.0 4.34

8322 10.6 1.95

第一列实际上是四个垂直合并的单元格。

当我使用pandas.read_excel阅读此内容时,我得到一个看起来像这样的DataFrame:

       Sample    CD4   CD8

Day 1 8311 17.30 6.44

NaN 8312 13.60 3.50

NaN 8321 19.80 5.88

NaN 8322 13.50 4.09

Day 2 8311 16.00 4.92

NaN 8312 5.67 2.28

NaN 8321 13.00 4.34

NaN 8322 10.60 1.95

如何让Pandas理解合并的单元格,或者快速方便地删除NaN并按适当的值分组?(一种方法是重置索引,逐步查找值并将NaN替换为值,传入天数列表,然后将索引设置为该列。但是似乎应该有一个更简单的方法。)

回答:

您可以使用Series.fillna方法来填入NaN值:

df.index = pd.Series(df.index).fillna(method='ffill')


例如,

In [42]: df

Out[42]:

Sample CD4 CD8

Day 1 8311 17.30 6.44

NaN 8312 13.60 3.50

NaN 8321 19.80 5.88

NaN 8322 13.50 4.09

Day 2 8311 16.00 4.92

NaN 8312 5.67 2.28

NaN 8321 13.00 4.34

NaN 8322 10.60 1.95

[8 rows x 3 columns]

In [43]: df.index = pd.Series(df.index).fillna(method='ffill')

In [44]: df

Out[44]:

Sample CD4 CD8

Day 1 8311 17.30 6.44

Day 1 8312 13.60 3.50

Day 1 8321 19.80 5.88

Day 1 8322 13.50 4.09

Day 2 8311 16.00 4.92

Day 2 8312 5.67 2.28

Day 2 8321 13.00 4.34

Day 2 8322 10.60 1.95

[8 rows x 3 columns]

以上是 Pandas:使用合并的单元格读取Excel 的全部内容, 来源链接: utcz.com/qa/433308.html

回到顶部