Задать вопрос
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)
  • Вопрос задан
  • 417 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@kamenyuga
convert_float - в pandas тип одинаков для всех значений в столбце - в столбце есть значение, которое нельзя преобразовать в int. Чаще всего такое бывает, когда в столбце пропущено значение, т.к. пустое значение - это нампаевский NaN типа float.

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

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

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

Похожие вопросы