我试图从当前目录中读取所有Excel文件,并从每个文件中读取所有工作表。当我尝试下面的代码与单个工作表,它工作正常,但当我尝试与多个工作表,然后它给出下面的错误
for row in df.values.tolist(): AttributeError: 'builtin_function_or_method' object has no attribute 'tolist'
下面是我的代码:
path = os.getcwd()
files = glob.glob(os.path.join(path,"*.xlsx"))
df_email = pd.DataFrame()
for f in files:
df=pd.read_excel(f, sheet_name=None)
for row in df.values.tolist():
for col in row:
matches = re.findall(regex, str(col))
if matches:
df_email = df_email.append([matches[0]], ignore_index=True)
1条答案
按热度按时间rkue9o1l1#
这是因为
read_excel
函数的sheet_name
参数。如果不指定sheet_name值,read_excel
将返回DataFrame(读取excel文件的第一个工作表)。但是,如果指定sheet_name
值(工作表名称为列表或None),它将返回DataFrame的字典。(请参阅https://pandas.pydata.org/docs/reference/api/pandas.read_excel.html)因此,您必须使用
df.values()
来获取excel文件中的每个工作表,因为df
的类型不是DataFrame
,而是dict
。尝试打印df的类型,如下所示: