Ну если ты только изучаешь python, зачем тебе pandas. Код не надо править его нужно выкидывать.
a) Ты хочешь прочитать каждый xlsx файл в отдельный фрейм, это нормально. Создаешь пустой список и складываешь в него фреймы.
dfs = []
for filename in fileanmes:
df = pd.read_excel(filename)
dfs.append(df)
где filenames твои пути для xlsx файлов.
б) Задача не ясна. На сколько я понял у этих файлов разные имена колонок и надо выбрать общий для всех набор.
from functools import reduce
import numpy as np
df1 = pd.DataFrame({
'A':[1],
'B':[2]
})
df2 = pd.DataFrame({
'A':[1],
'C':[2]
})
df3 = pd.DataFrame({
'A':[1],
'D':[2]
})
dfs_column_names = [df1.columns, df2.columns, df3.columns]
print(reduce(np.intersect1d, dfs_column_names))
Вот так ты можешь найти общие колонки у любого количества фреймов.
Естественно тебе не нужно хардкодить список с колонками прям в первом цикле заноси не только фрейм в список, но и в другой список заноси его колонки потом вне списка сохрани общий набор колонок как я привел в примере.
Ну и я так понимаю в дальнейшем ты собираешься выбрать по уникальным для всех фреймов колонкам и собрать все в единый фрейм.
pd.concat(dfs).
Где dfs это список фреймов, с едиными колонками. То есть предварительно, ты как я показал нашел common_columns. и затеам
dfs=[df[common_columns] for df in dfs].
И затем конкатенируешь.