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和group? (一种方法是重置索引,逐步find值并用值replaceNaN,传入date列表,然后将索引设置到列,但似乎应该有一个更简单的方法。

你可以使用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]