Несколько файлов с разными столбцами с использованием pandas

#python #excel #pandas

#python #excel #pandas

Вопрос:

У меня есть большое количество файлов Excel с разными столбцами

Например:

Файл 1:

 Name | sale | Tips
-------------
sam  |  9   | 7
cham |  2   | 2
  

Файл 2:

 Name | sale | Items
-------------------
mini |  6    | Tshirt
Lary |  3    | Hat
  

Вывод:

 Name |  sale | Items
--------------------
sam  |  9    | Nan
cham |  2    | Nan
mini |  6    | Tshirt
Lary |  3    | Hat
  

У меня есть 500 файлов для создания в одном наборе данных

Этот код работает до некоторой степени, но если все столбцы не совпадают.

 import pandas as pd
import glob,os
import numpy as np


inputFile = 'C:/Users/Desktop/test'

all_workbooks =glob.glob(os.path.join(inputFile,'*.xlsx'))

column_list = []
for files in all_workbooks:
    
    data= pd.read_excel(files,header =0,sheet_name='sheet1')
    column_list.append(data)
    stack_np = np.vstack(column_list)
    newData = pd.DataFrame(stack_np,columns=['Name','Sale'])

print(newData)
  

Этот код работает, если у меня одинаковые столбцы во всех файлах.

Кто-нибудь может помочь мне с решением, если у меня неупорядоченные столбцы?

Ответ №1:

Вам нужно собрать фреймы данных и объединить их после завершения цикла

 all_dfs =[]
wanted_columns = ['Name', 'sale', 'Items']
for files in all_workbooks:
    data = pd.read_excel(files,header =0,sheet_name='sheet1')
    data = data[wanted_columns] # or skip this line to use all columns
    all_dfs.append(data)

master_df = pd.concat(all_dfs)
del all_dfs, data