首页 文章

熊猫:用合并的单元格读取Excel

提问于
浏览
17

我有多个工作表的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,传入日期列表,然后将索引设置为列 . 但似乎应该有一个更简单的方法 . )

1 回答

  • 26

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

相关问题