Ошибка значения: не удается преобразовать значение NaN с плавающей точкой в целое число при чтении excel

#python #pandas

Вопрос:

Я читаю файл xlsx, который заранее каждый раз, когда я пытаюсь его открыть, появляется окно с сообщением:

Мы обнаружили проблему с некоторым контентом в «…xlsx». Вы хотите, чтобы мы постарались восстановить как можно больше? Если вы доверяете источнику этой книги, нажмите кнопку да

Я попытался открыть файл с пандами следующим образом::

 df = pd.read_excel(path_xlsx)
 

или

 df = pd.read_excel(path_xlsx, dtype=str)


>>ValueError: cannot convert float NaN to integer
 

Я подозреваю, что рассматриваемая колонка называется «ExpDate» … он содержит данные этого стиля:

 NaN
NaN
NaN
31/12/2021
31/12/2021
NaN
 

Я не могу управлять файлом вручную

Комментарии:

1. нам понадобятся некоторые данные, чтобы воспроизвести это.

2. загрузка не удалась.

3. justbeamit.com/fhhhx

4. NaN означает «не-число». Вы пытаетесь преобразовать его в число. Что он должен делать?

5. api должен преобразовать столбец в str .. Я не хочу преобразовывать даты в целые числа, но я не могу манипулировать файлом вручную

Ответ №1:

Интересная штука!

несмотря на то, что parse_dates имеет значение False, он все равно пытается проанализировать даты, и в основном это зависит от типа столбца, настроенного в excel. Одним из способов было бы, если есть проблема или вы подозреваете проблему с любым столбцом даты, измените этот столбец на текст в excel, прежде чем просить панд прочитать.

 import pandas as pd
file_name="Inventory Lots_20210423142831(1).xlsx"
df=pd.read_excel(file_name,header=0,parse_dates=False)
 

решение этой проблемы, пожалуйста, очистите даты в dataclean,
а затем импортируйте их через pandas.

Результат: Результат

трассировка исключений:

 67                     cell_contents = xldate.xldate_as_datetime(cell_contents, epoch1904)
# then python3.8/site-packages/xlrd/xldate.py in xldate_as_datetime(xldate, datemode)
    150     # The integer part of the Excel date stores the number of days since
    151     # the epoch and the fractional part stores the percentage of the day.
--> 152     days = int(xldate)
 

Комментарии:

1. Скрипт автоматически вводит Wams, загружает файл и открывает его. Я не могу манипулировать excel вручную