关于#python#的问题,如何解决?

想用python将文件家里面的数据导入,但是遇到错误,请各位DS、LS指导一下:

TypeError                                 Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_14760\1758730604.py in 
      2 for i in file_name_list:
      3         if i.endswith(".xlsx"):       #筛选只读取xlsx结尾的文件
----> 4             df.append(pd.read_excel((file_dir_list[i])))
      5 
      6 

TypeError: list indices must be integers or slices, not str

问题出在这里“pd.read_excel(file_dir_list[i])”

import pandas as pd
import os
from functools import reduce

#指定存放文件的地址
dir_str = r'E:\数据包\2021-2023全国各城市库存量\data_1'

 #返回.xlsx格式所有文件名的列表list
file_name_list = os.listdir(dir_str)

['export_0.xlsx', 'export_1.xlsx']

# for循环获取所有.xlsx格式文件的绝对地址的列表list
file_dir_list = [os.path.join(dir_str,x) for x in file_name_list]

['E:\\数据包\\2021-2023全国各城市库存量\\data_1\\export_0.xlsx', 'E:\\数据包\\2021-2023全国各城市库存量\\data_1\\export_1.xlsx', ]

df = []
for i in file_name_list:
        if i.endswith(".xlsx"):       #筛选只读取xlsx结尾的文件
            df.append(pd.read_excel(file_dir_list[i]))

第19行变量i,表示的是你变量出来的所有文件名,是字符串类型。不能当做列表的下标,修改后的代码:

import pandas as pd
import os
from functools import reduce
 
#指定存放文件的地址
dir_str = r'E:\数据包\2021-2023全国各城市库存量\data_1'
 
 #返回.xlsx格式所有文件名的列表list
file_name_list = os.listdir(dir_str)
 
['export_0.xlsx', 'export_1.xlsx']
 
# for循环获取所有.xlsx格式文件的绝对地址的列表list
file_dir_list = [os.path.join(dir_str,x) for x in file_name_list]
 
['E:\\数据包\\2021-2023全国各城市库存量\\data_1\\export_0.xlsx', 'E:\\数据包\\2021-2023全国各城市库存量\\data_1\\export_1.xlsx', ]
 
df = []
for idx, i in enumerate(file_name_list):
        if i.endswith(".xlsx"):       #筛选只读取xlsx结尾的文件
            df.append(pd.read_excel(file_dir_list[idx]))

有帮助的话,请点采纳~