我有包含多个工作表的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,传入天数列表,然后将索引设置为列。但似乎应该有一种更简单的方法。)
发布于 2014-04-08 21:13:43
您可以使用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]发布于 2019-10-19 14:48:18
df = df.fillna(method='ffill', axis=0) # resolved updating the missing row entries发布于 2022-01-24 22:51:58
8年后,pandas.read_excel()可以通过index_col参数在内部为您解决此问题。
df = pd.read_excel('path_to_file.xlsx', index_col=[0])将index_col作为列表传递将导致熊猫查找MultiIndex。在有一个长度为1的列表的情况下,pandas会创建一个常规的Index来填充数据。
https://stackoverflow.com/questions/22937650
复制相似问题