Проблема с именами столбцов в XlsxWriter и Pandas

Я собираюсь автоматизировать очень небольшую часть моей работы, которая связана с редактированием некоторых файлов, простой копировальной вставкой в ​​Excel. Я добился небольшого успеха в этом в CSV и неформатированных файлах Excel. Однако последний файл необходимо отформатировать, и я решил использовать для этого XlsxWriter. Я столкнулся с проблемой, из-за которой имена столбцов не менялись должным образом влево при удалении индекса. Вдобавок к этому часть форматирования перемещается (ширина столбца), а другие биты - нет (цвет, выравнивание и т. Д.).

data_cols = ['Date', 'ID', 'Latitude', 'Longitude', 'Snow Accumulation at Customer Facility (inches)', 'Season Accumulation of Snow (inches)', 'Nearest Human Observed Snow Accumulation (inches)','Distance between snow observation site and customer facility (miles)','24 hr Maximum wind speed (mph)','24 hr Min. Temp. (degrees F)','Sleet or Freezing Rain (1=Yes; 0=No)']

data.columns = data_cols

writer = pd.ExcelWriter('C:/Users/csayre/Desktop/snowexpress_testbed/' + 'snowexpress_' + day.strftime("%m%d%y") + '_dentco.xlsx', engine = 'xlsxwriter')

data.to_excel(writer, sheet_name='Sheet1', index=False)

workbook  = writer.book
worksheet = writer.sheets['Sheet1']

header_format = workbook.add_format({
    'bold': False,
    'font_name': 'Arial',
    'font_size': 10,
    'text_wrap': True,
    'center_across': True,
    'valign': 'bottom',
    'fg_color': '#cdffff',
    'border': 1})

for col_num, value in enumerate(data.columns.values):
    worksheet.write(0, col_num + 1, value, header_format)


worksheet.set_column(0, 0, 14.43)
worksheet.set_column(1, 1, 18.86)
worksheet.set_column(2, 2, 8.71)
worksheet.set_column(3, 3, 10.43)
worksheet.set_column(4, 7, 11.57)
worksheet.set_column(8, 8, 12)
worksheet.set_column(9, 9, 9.57)
worksheet.set_column(10, 10, 9.57)

writer.save()

Базовый обзор, данные - это существующий фрейм данных, которым я манипулировал ранее и сохраняю как csv в основном для отслеживания рабочего процесса, у меня не было проблем при экспорте его как csv и удалении индекса.

Это то, что я пытаюсь создать

Это то, что этот код производит с "index = false"

Вот как это выглядит с индексом


person Charles Sayre    schedule 31.01.2018    source источник


Ответы (1)


Строки и столбцы имеют нулевой индекс в XlsxWriter, поэтому вам, вероятно, понадобится col_num, а не col_num +1 при написании заголовка. В вашем примере:

for col_num, value in enumerate(data.columns.values):
    worksheet.write(0, col_num, value, header_format)
person jmcnamara    schedule 01.02.2018
comment
Да, это исправлено. Что ж, теперь я чувствую себя глупо из-за того, что не заметил этого. Спасибо за Ваш ответ - person Charles Sayre; 01.02.2018