首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas:使用合并的单元格读取Excel

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

Stack Overflow用户
提问于 2014-04-08 20:51:39
回答 3查看 40.4K关注 0票数 44

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

代码语言:javascript
复制
        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:

代码语言:javascript
复制
       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,传入天数列表,然后将索引设置为列。但似乎应该有一种更简单的方法。)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-08 21:13:43

您可以使用Series.fillna方法来向前填充NaN值:

代码语言:javascript
复制
df.index = pd.Series(df.index).fillna(method='ffill')

例如,

代码语言:javascript
复制
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]
票数 66
EN

Stack Overflow用户

发布于 2019-10-19 14:48:18

代码语言:javascript
复制
df = df.fillna(method='ffill', axis=0)  # resolved updating the missing row entries
票数 9
EN

Stack Overflow用户

发布于 2022-01-24 22:51:58

8年后,pandas.read_excel()可以通过index_col参数在内部为您解决此问题。

代码语言:javascript
复制
df = pd.read_excel('path_to_file.xlsx', index_col=[0])

将index_col作为列表传递将导致熊猫查找MultiIndex。在有一个长度为1的列表的情况下,pandas会创建一个常规的Index来填充数据。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22937650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档