Pandas applymap ошибка памяти

1

Я пытаюсь изменить все экземпляры datetime на строку и экспортировать свой dataframe в excel. Информационный кадр может иметь от 20 000 до 50 000 записей. Это мой текущий код:

wb = xw.Book('filelname.xlsx')
sht = wb.sheets['FNC']
data = wb.sheets['Data']
smdata = wb.sheets['Social']

df_sm_temp = sm_all

df_sm_temp['Date'] = df_sm_temp['Date'].apply(lambda x: str(x) if isinstance(x, datetime.time) else x)
df_sm_temp['Added'] = df_sm_temp['Added'].apply(lambda x: str(x) if isinstance(x, datetime.time) else x)
df_sm_temp['Updated'] = df_sm_temp['Updated'].apply(lambda x: str(x) if isinstance(x, datetime.time) else x)

 smdata.range('SM_ALL').value = df_sm_temp

При попытке запустить это, я получаю MemoryError. Любая помощь будет принята с благодарностью!

Ниже приведен небольшой пример набора данных: https://www.sendspace.com/file/jxhmx2

Спасибо

Теги:
pandas
xlwings

1 ответ

2
Лучший ответ

на самом деле вам не нужно преобразовывать данные сами, просто используйте datetime_format в сочетании с движком xlsxwriter:

Демо-версия:

writer = pd.ExcelWriter('/path/to/result.xlsx', engine='xlsxwriter', 
                        date_format='mm/dd/yyyy', datetime_format='mm/dd/yyyy')

df.to_excel(writer)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню