Python не может преобразовать список в DataFrame - PullRequest
0 голосов
/ 22 марта 2020

Я пытаюсь импортировать 2 набора данных из одного рабочего стола Excel, они находятся в разных диапазонах. Во-первых, у меня есть функция, позволяющая мне вводить диапазон для извлечения данных из диапазона. Затем я хочу добавить данные каждого диапазона как 1 DataFrame. Код работает от извлечения данных для добавления данных. Я преобразовал его как DataFrame, но он все еще в списке. Когда я экспортирую в файл Excel, это только 2 строки данных, потому что есть 2 подсписка. Мой ожидаемый результат - 1 DataFrame, а не список, данные в строках и столбцах.

#code to import workbook 
    from openpyxl import load_workbook
    from openpyxl.utils import get_column_interval
    import re

#function allow me to enter range 
    def load_workbook_range(range_string, ws):
      col_start, col_end = re.findall("[A-Z]+", range_string)

      data_rows = []
      for row in ws[range_string]:
          data_rows.append([cell.value for cell in row])

      return pd.DataFrame(data_rows, columns=get_column_interval(col_start, col_end))

# load workbook 
    wb = load_workbook(filename=b, read_only=True)
    ws = wb.active
     List = ['B24:D29','B2:D11'];

#create list for list and extra data from different range (List)
    df_list=[]
    for r in List:
      y=load_workbook_range(r,ws)
      f=pd.DataFrame(y)
      f.columns = f.iloc[0]
      g=f.drop(f.index[1])
      df_list.append(g)


    df_list

#output 

    [0  InComplete offer     NaN  Response 
     0  InComplete offer    None  Response 
     2                  1  name       Marie
     3                  2      a    13.7716
     4                  3      b    75.2104
     5                  4      c    26.8648,
     0  InComplete offer          NaN  Response 
     0  InComplete offer         None  Response 
     2                  1       name       Marie
     3                  2     invest     13.7716
     4                  3    capital     75.2104
     5                  4     income     26.8648
     6                  5    expense     83.1496
     7                  6     school     43.5749
     8                  7  transport     85.2239
     9                  8      others    82.3117]

#if I export to excel file, it is a list
    w = pd.DataFrame(df_list)
    w.to_excel (new_path, index = False, header=True)
    w

#output in excel file 

    0
    0   0 InComplete offer NaN Response 0 InCo...
    1   0 InComplete offer NaN Response 0 ...

#my expect output when export to excel file , look like below , in 3 different columns and multi rows.

    0  InComplete offer     NaN  Response 
     0  InComplete offer    None  Response 
     2                  1  name       Marie
     3                  2      a    13.7716
     4                  3      b    75.2104
     5                  4      c    26.8648,
     0  InComplete offer          NaN  Response 
     0  InComplete offer         None  Response 
     2                  1       name       Marie
     3                  2     invest     13.7716
     4                  3    capital     75.2104
     5                  4     income     26.8648
     6                  5    expense     83.1496
     7                  6     school     43.5749
     8                  7  transport     85.2239
     9                  8      others    82.3117

Благодарим вас за помощь и спасибо. M C

1 Ответ

0 голосов
/ 22 марта 2020

Попробуйте

i = 0
for r in List:

    y = load_workbook_range(r,ws)
    f = pd.DataFrame(y)
    f.columns = f.iloc[0]
    g = f.drop(f.index[1])

    i += 1
    if i == 1:
       df_list = g
    else:
       df_list = df_list.append(g)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...