Метод pandas to_excel () заставляет научную запись в столбцах int64 при просмотре в Excel - PullRequest
0 голосов
/ 06 ноября 2018

Я использую этот код для сохранения кадра данных в Excel:

    writer = pd.ExcelWriter(self.file_name, engine='openpyxl')
    writer.book = workbook
    writer.sheets = dict((ws.title, ws) for ws in workbook.worksheets)
    df.to_excel(writer, sheet_name=sheet_name, columns=columns, header=True, index=False, startrow=11, startcol=0)
    writer.save()

к сожалению, любой столбец с большим типом int64 dtype выглядит так:

enter image description here

Внутри Панд я подавляю научную нотацию, выполняя следующее:

pd.set_option('display.float_format', lambda x: '%.f' % x) 
pd.set_option('display.precision', 0)

Поэтому, когда я печатаю фрейм данных, столбцы int64 выглядят так:

enter image description here

Я попытался преобразовать столбец в тип str следующим образом:

    def convert_int_cols_to_str(df):
        dtypes = df.dtypes
        for col, dtype in dtypes.iteritems():
            if dtype == 'int64':
                df[col] = df[col].astype(str)

После этого применения dtypes для этих столбцов отображаются как объекты вместо int64, но все еще отображаются в научной записи в Excel. Будем очень благодарны за любые идеи о том, как этого избежать!

Вот версии, которые я использую для соответствующих пакетов:

openpyxl==2.5.9
pandas==0.20.3

1 Ответ

0 голосов
/ 06 ноября 2018

Ого, извините всех. Оказывается, я применял преобразование dtype в неправильной точке моего сценария. Метод, который я описал выше, на самом деле отлично работает для подавления научной нотации для столбцов int64 в Excel. Я оставлю вопрос на случай, если он поможет кому-то еще в будущем.

...