2015-12-31 2 views
2

Я пытаюсь написать фрейм данных для excel, а также сделать ширину ячейки (20) и попытаться скрыть линии сетки. До сих пор я сделал, как:Pandas: Запись фрейма данных в Excel (.xls) проблема с файлом

writer = ExcelWriter('output.xlsx') 

df.to_excel(writer,'Sheet1') 
writer.save() 


worksheet = writer.sheets['Sheet1'] 

# Trying to set column width as 18 
worksheet.set_column(0,3,18) 
#the data frame has 2 columns and a row - in xls it converts them to 3 columns 

worksheet.hide_gridlines() 
# I tried with option 2 - but this hides only the column grids, I mean the row(in data fram now became column A - it still has grid lines) 

writer.save() 

Мой кадр данных выглядит следующим образом:

       Col1  Col2 
    Time 
    2011-01-01 01:00:00  4345  0.444 

    2011-01-01 11:00:00  443   7.4 

Это не так? Я не вижу изменений в выходном файле. Что я здесь делаю неправильно? Есть ли способ назвать заголовок строки?

Здесь. При попытке скрыть линию сетки. Строка (в кадре данных ['Time]) теперь столбец A в excel по-прежнему имеет сетку.

+0

Что вы подразумеваете под "* Есть ли способ назвать мою строку? *" Индекс включен в письменные данные по умолчанию, и индекс эффективно называет все строки. –

+0

Я имел в виду заголовок строки. Сожалею! – Sarah

+0

Вы должны включить хотя бы образец вашего фрейма данных, чтобы воспроизвести вашу проблему. –

ответ

1

IIUC, для ширины set_column Вы фактически пишите свой df дважды; правильный рабочий процесс должен быть следующим (EDIT: добавить engine ключевое слово):

import pandas as pd 

writer = pd.ExcelWriter('output.xlsx', engine='xlsxwriter') 

df.to_excel(writer,'Sheet1') 

worksheet = writer.sheets['Sheet1'] 

# Trying to set column width as 18 
worksheet.set_column(0,3,18) 
#the data frame has 2 columns and a row - in xls it converts them to 3 columns 

worksheet.hide_gridlines() 
# I tried with option 2 - but this hides only the column grids, I mean the row(in data fram now became column A - it still has grid lines) 

writer.save() 

Это должно правильно установить ширину столбцов. Если вы не хотите, чтобы столбец индекса Time в вашем выводе, вы должны установить:

df.to_excel(writer,'Sheet1',index=False) 

, если были установлены ранее:

df.set_index = 'Time' 

Вопрос сетки на самом деле это все еще там, когда сюжет полный кадр данных. Я думаю, что текущий объект ExcelWriter не поддерживает индекс для опции hide_gridlines(), но я не знаю, является ли это ошибкой или нет.

EDIT: благодаря комментариям это не ошибка.

+2

Что касается последнего абзаца, это не ошибка. XlsxWriter скрывает линии сетки, которые можно проверить, перейдя в предварительный просмотр. Линии, видимые вокруг индексов, являются границами (а не сетками), которые по умолчанию добавляются Pandas. – jmcnamara

+0

Спасибо @jmcnamara за это! –

Смежные вопросы