Sergei_Erjemin
@Sergei_Erjemin
Улыбайся, будь самураем...

Почему не срабатывают некоторые параметры pandas.read_excel?

Наверняка лузерский вопрос, но что-то не гуглятся ответы.

Не срабатывают параметры convert_float, date_parser и parse_dates.

  • convert_float=True -- не все целочисленные значения excel превращаются в целочисленные. Часть остается с плавающей точкой. Например, значение 10 в excel превращается в 10.0... И видно, что в общем тут целое, но почему-то pandas не преобразовало. А другие значения, которые при convert_float=False не преобразовывались -- действительно становятся int
  • Как работают date_parser и parse_dates -- вообще не понял. Установка parse_dates в True или False -- ничего не меняет. В обоих случаях даты превращаются в целочисленные значения (иногда с отрицательным знаком, и даже convert_float на них не влияет). Как заставить срабатывать функцию через date_parser -- не понял.


Для примера код.

import pandas
from datetime import datetime


def date_format(date):
    # return date.isoformat()
    return 'TEST'


def main():
    # ...
    # ...
    xls_imported = pandas.read_excel(args.XLS_FILE, sheet_name=4, na_values=None,
                                     convert_float=True, mangle_dupe_cols=True,
                                     date_parser=date_format, parse_dates=True)
  • Вопрос задан
  • 342 просмотра
Решения вопроса 1
@kamenyuga
convert_float - в pandas тип одинаков для всех значений в столбце - в столбце есть значение, которое нельзя преобразовать в int. Чаще всего такое бывает, когда в столбце пропущено значение, т.к. пустое значение - это нампаевский NaN типа float.

parse_dates - передается список номеров или названий столбцов, которые необходимо распарсить в дату - отдельные столбцы или группы столбцов, если дата распределена по нескольким.

date_parser - дефолтный парсер нормально работает, хотя и сильно увеличивает время загрузки данных. Имеет смысл парсить даты отдельно после загрузки, если объем большой.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы