此问题已经在这里有了答案:
我有15个xlsx文件,每个文件都有多个工作表。我想以这样一种方式动态地循环它:所有工作表和工作簿都在一个数据框中读取。
我曾尝试通过以下方式使用pd.read_excel
filenames = glob.glob("*.xlsx")
dfList=[]
colnames =['dummy','dummy1','dummy2']
for a in filenames:
df=pd.read_excel(a, sheet_name=None, header = None, encoding = "ISO-8859-1")
dfList.append(df)
df= pd.concat(dfList, axis=0, ignore_index= True)
df.columns= colnames
我运行pd.concat时收到的错误是
TypeError: cannot concatenate object of type "<class 'collections.OrderedDict'>"; only pd.Series, pd.DataFrame, and pd.Panel (deprecated) objs are valid
并且也尝试过
for a in filenames:
df=[pd.read_excel(a, sheet_name=None, header = None, encoding = "ISO-8859-1").values()]
dfList.append(df)
我收到以下错误
TypeError: cannot concatenate object of type "<class 'collections.OrderedDict'>"; only pd.Series, pd.DataFrame, and pd.Panel (deprecated) objs are valid
您为什么需要concat?您可以使用df = pd.DataFrame(dfList)
将您的列表转换为数据框吗?>
我认为您需要更改: