【问题标题】:How to read Multiple Xlsx files having multiple work books in python dataframe using a loop [duplicate]如何使用循环在python数据框中读取具有多个工作簿的多个Xlsx文件[重复]
【发布时间】:2020-02-05 15:07:41
【问题描述】:

我有 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

【问题讨论】:

  • 那里给出的代码也不起作用,上面提出的查询中也提到了错误

标签: python pandas spyder


【解决方案1】:

为什么需要 concat? 您可以使用df = pd.DataFrame(dfList) 将您的列表转换为数据框吗

【讨论】:

  • 我认为该列表只有多个 excel 文件的列表,但无法读取这些 excel 文件中的数据。如果我错了,请纠正我
【解决方案2】:

我认为你需要改变:

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 = []
df = pd.concat(dfList, axis=0, ignore_index= True)
df.columns= colnames

【讨论】:

  • 它不起作用我收到以下错误
  • 我得到的错误是“TypeError:无法连接类型为“”的对象;只有 pd.Series、pd.DataFrame 和 pd.Panel(已弃用)对象是有效”并且我使用的代码是“对于文件名中的 a:df=pd.read_excel(a, sheet_name=None, header = None, encoding = "ISO-8859-1") dfList.append(df) df=[] df= pd.concat(dfList, axis=0, ignore_index= True)"
猜你喜欢
  • 2015-11-19
  • 2015-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-16
  • 1970-01-01
  • 2021-12-23
相关资源
最近更新 更多