python-3.x Pandas代码在For循环中不工作

0lvr5msh  于 2022-12-15  发布在  Python
关注(0)|答案(1)|浏览(144)

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循环中运行。
请帮帮我。

hjzp0vay

hjzp0vay1#

变更:

columns_list = list(map(lambda x: str(x), filter(r.search, df.columns)))

致:

columns_list = list(map(lambda x: str(x), filter(r.search, columns_list )))

因为df.columns是Pandas.core.indexes.base.Index而不是列表

相关问题