#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.