Я использую этот код для сохранения кадра данных в 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 выглядит так:
Внутри Панд я подавляю научную нотацию, выполняя следующее:
pd.set_option('display.float_format', lambda x: '%.f' % x)
pd.set_option('display.precision', 0)
Поэтому, когда я печатаю фрейм данных, столбцы int64 выглядят так:
Я попытался преобразовать столбец в тип 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