считывание определенных ячеек из нескольких электронных таблиц Excel в один фрейм данных pandas

#python #excel #pandas #openpyxl

#питон #превосходить #панды #openpyxl

Вопрос:

Я хотел бы прочитать определенные ячейки из нескольких электронных таблиц Excel в один фрейм данных pandas.

до сих пор я пробовал это. (безуспешно)

 import pandas as pd import glob import xlrd  file_list = glob.glob("*.xls")  df = pd.DataFrame()  for f in file_list:  wb = xlrd.open_workbook(f)  sheet = wb.sheet_by_index(0)  name = sheet.cell_value(rowx=9, colx=2)  city = sheet.cell_value(rowx=15, colx=2)  df = df.append([name,city])  

Желаемым результатом является фрейм данных pandas, такой как этот

 name city Tom NY Alex Toronto Anne Atlanta ... ...  

Спасибо

Комментарии:

1. проблема возникает на df = df.append() линии? или вы вообще не умеете читать по имени и городу? есть ли у вас какие-нибудь результаты?

Ответ №1:

Я думаю, вам нужно два набора [[]] того, что добавляется. С помощью одного набора скобок он пытается добавить имя в виде строки и город в виде строки, а не в виде столбцов в одной строке.

 import pandas as pd import glob import xlrd  file_list = glob.glob("*.xls")  df = pd.DataFrame()  for f in file_list:  wb = xlrd.open_workbook(f)  sheet = wb.sheet_by_index(0)  name = sheet.cell_value(rowx=9, colx=2)  city = sheet.cell_value(rowx=15, colx=2)  df = df.append([[name,city]])  

Это будет иметь столбцы с именами 0 и 1 , хотя (поскольку вы не определили имена при создании фрейма данных), поэтому последним шагом было бы переименовать их:

 df = df.rename(columns={0:'name',1:'city'})  

Комментарии:

1. отлично! это работает. Спасибо!

2. не стесняйтесь отмечать правильный / повторять этот ответ, чтобы другие могли видеть, что решение сработало.