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 и группу по соответствующему значению? (Один из подходов был бы к reset индексу, шаг за шагом, чтобы найти значения и заменить NaN со значениями, пройти в списке дней, а затем установить индекс в столбец. Но похоже, что должен быть более простой подход. )
Ответы
Ответ 1
Вы можете использовать метод 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]
Ответ 2
df = df.fillna(method='ffill', axis=0) # resolved updating the missing row entries