Как записать содержимое списка в лист Excel, используя openpyxl - PullRequest
0 голосов
/ 23 декабря 2018

У меня есть следующий список:

d_list = ["No., Start Name, Destination, Distance (miles)",
"1,ALBANY,NY CRAFT,28",
"2,GRACO,PIONEER,39",
"3,FONDA,ROME,41",
"4,NICCE,MARRINERS,132",
"5,TOUCAN,SUBVERSIVE,100",
"6,POLL,CONVERGENCE,28",
"7,STONE HOUSE,HUDSON VALLEY,9",
"8,GLOUCESTER GRAIN,BLACK MUDD POND,75",
"9,ARMY LEAGUE,MUMURA,190",
"10,MURRAY,FARMINGDALE,123"]

Итак, в основном, список состоит из тысяч элементов (только что здесь показано 10 образцов), каждый из которых представляет собой строку элементов, разделенных запятыми.Я хотел бы написать это на новом листе в книге.

Примечание: рабочая книга уже существует и содержит другие листы, я просто добавляю новый лист с этими данными.

Мой код:

    import openpyxl
    wb = openpyxl.load_workbook('data.xlsx')
    sheet = wb.create_sheet(title='distance')
    for i in range(len(d_list)):
        sheet.append(list(d_list[i]))

Я ожидаю (в этом примере) 11 строк данных, каждая из которых содержит 4 столбца.Тем не менее, я получаю 11 строк в порядке, но с каждым символом каждой строки, записанной в каждой ячейке!Я думаю, что почти там ... что мне не хватает?(Примечание: я прочитал все доступные посты, связанные с этой темой, но не смог найти ни одного, который отвечал бы на этот конкретный тип вопроса, поэтому я задаю).

Большое спасибо!

1 Ответ

0 голосов
/ 23 декабря 2018

Вы можете использовать панд для решения этой проблемы:

1.) Преобразуйте ваш список в фрейм данных:

In [231]: l
Out[231]: 
['No., Start Name, Destination, Distance (miles)',
 '1,ALBANY,NY CRAFT,28',
 '2,GRACO,PIONEER,39',
 '3,FONDA,ROME,41',
 '4,NICCE,MARRINERS,132',
 '5,TOUCAN,SUBVERSIVE,100',
 '6,POLL,CONVERGENCE,28',
 '7,STONE HOUSE,HUDSON VALLEY,9',
 '8,GLOUCESTER GRAIN,BLACK MUDD POND,75',
 '9,ARMY LEAGUE,MUMURA,190',
 '10,MURRAY,FARMINGDALE,123']

In [228]: df = pd.DataFrame([i.split(",") for i in l])

In [229]: df
Out[229]: 
      0                 1                2                  3
0   No.        Start Name      Destination   Distance (miles)
1     1            ALBANY         NY CRAFT                 28
2     2             GRACO          PIONEER                 39
3     3             FONDA             ROME                 41
4     4             NICCE        MARRINERS                132
5     5            TOUCAN       SUBVERSIVE                100
6     6              POLL      CONVERGENCE                 28
7     7       STONE HOUSE    HUDSON VALLEY                  9
8     8  GLOUCESTER GRAIN  BLACK MUDD POND                 75
9     9       ARMY LEAGUE           MUMURA                190
10   10            MURRAY      FARMINGDALE                123

2.) Запишите приведенный выше фрейм данных вExcel в новом листе в 4 колонках:

import numpy as np
from openpyxl import load_workbook

path = "data.xlsx"

book = load_workbook(path)
writer = pd.ExcelWriter(path, engine = 'openpyxl')
writer.book = book

df.to_excel(writer, sheet_name = 'distance')
writer.save()
writer.close()
...