#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. не стесняйтесь отмечать правильный / повторять этот ответ, чтобы другие могли видеть, что решение сработало.