Это потому, что Excel не хранит эти #N/A
значения в столбце B в виде строк. Существует визуальная индикация этого, если вы заметите, что эти #N/A
ячейки выровнены по центру.
Панды не будут различать различные типы ошибок Excel: #N/A
/ #NUM!
/ #NAME?
/ #VALUE!
и т. Д. Будут отображаться как NaN
. Что имеет смысл, для каждой ошибки Excel не существует параллельного типа Python / C.
Короче говоря, с pd.read_excel
вы ничего не можете сделать, кроме как переопределить все ошибки с определенной строкой, например, '#N/A'
и потеряете все знания о конкретных типах ошибок, обнаруженных вами, открыв файл в Excel:
df['Column2'] = df['Column2'].fillna('#N/A')
Альтернативой является принудительное использование Excel для использования текстовых значений, например, вставив в ячейку Excel:
=TEXT("#N/A", "")
Затем прочитайте, используя pd.read_excel
с keep_default_na=False
. Это кажется больше проблем, чем стоит.