Чтение файлов Excel из папки, извлечение ячейки из листа 1 и добавление значений на новый лист Excel

#python #excel

#python #excel

Вопрос:

У меня в папке около 100 файлов Excel. Мне нужно извлечь ячейку, скажем, столбец name D6 из листа 1 файлов Excel и вывести ее в новый файл / лист Excel. Я ответил на несколько вопросов SO, но не смог найти желаемый результат. Вот в чем моя проблема, когда я запускаю приведенную ниже программу `

 TypeError: cannot concatenate a non-NDFrame object
  

`

 import os
import pandas as pd
import xlrd
import xlwt

files = os.listdir(path)
files


all_data = pd.DataFrame()

for file in files:
    wb = xlrd.open_workbook(file)
    sheet = wb.sheet_by_index(0)
    df = sheet.cell_value(5,3)
    all_data.append(df,ignore_index=True)

writer = pd.ExcelWriter('output.xlsx', engine='xlsxwriter')
all_data.to_excel(writer,'sheet1')
writer.save()
  

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

1. Если вы застряли с использованием pandas для работы с Excel, я предлагаю попробовать работать с файлами Excel с пакетом pywin32

Ответ №1:

В вашей ошибке говорится, что вы можете объединить фрейм данных только с другим фреймом данных. при чтении ячейки с помощью xlrd вы не получаете df-объект. поэтому либо сделайте отдельную ячейку фреймом данных, либо сохраните ее временно, а затем создайте фрейм данных.

что-то вроде этого (непроверенное) должно это сделать.

 all_data = [] # list
for file in files:
    df = pd.read_excel(file, sheetname='sheet-1')
    all_data.append(df.iloc[5,3])
all_data = pd.DataFrame(all_data) # dataframe
all_data.to_excel('all_data.xlsx')
  

или можно использовать другие библиотеки, чтобы сделать то же самое, например, openpyxl.