EDIT看起来我在帖子里放了两个完全不同的代码。我已经修正了这些修改。请帮助,这些代码在for循环外工作,但在循环内不工作。
伙计,我好像有个很奇怪的问题,
此脚本完全按预期工作
import pandas as pd
import os
import re
wb = 'data/KSA STRATEGY OPSI.xlsx'
df = pd.read_excel(wb)
df = pd.read_excel(wb, sheet_name = 'OPSI', header=18)
columns_list = list(df.columns)
r = re.compile("[A-Za-z]{3}-[0-9]{2}-Q")
columns_list = list(filter(r.match, columns_list)) # Read Note below
columns_list.insert(0, "Item_code")
columns_list.insert(1, "Type")
但是当我把它放进for循环的时候;
import pandas as pd
import os
import re
wb = 'data/KSA STRATEGY OPSI.xlsx'
df = pd.read_excel(wb)
testdf = pd.ExcelFile(wb)
for sheet in testdf.sheet_names:
df = pd.read_excel(wb, sheet_name = 'OPSI', header=df.index[df.iloc[:,0]=='Upload Flag'].tolist()[0])
columns_list = list(df.columns)
r = re.compile("[A-Za-z]{3}-[0-9]{2}-Q")
columns_list = list(filter(r.match, columns_list)) # Read Note below
columns_list.insert(0, "Item_code")
columns_list.insert(1, "Type")
当我运行这个代码时我得到
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In [85], line 16
14 columns_list = list(df.columns)
15 r = re.compile("[A-Za-z]{3}-[0-9]{2}-Q")
---> 16 columns_list = list(filter(r.match, columns_list)) # Read Note below
17 columns_list.insert(0, "Item_code")
18 columns_list.insert(1, "Type")
TypeError: expected string or bytes-like object
我错过了什么,我已经拔了一整天的头发了!请帮帮我
我承认我不是python的Maven,但我希望如果一些代码正常运行,它应该在for循环中运行。
请帮帮我。
1条答案
按热度按时间hjzp0vay1#
变更:
致:
因为df.columns是Pandas.core.indexes.base.Index而不是列表