通过从循环调用函数,python函数无法工作

2024-06-09 12:43:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图调用一个函数,但没有成功 目标是运行职责分离检查规则

per=pd.read_excel('Permissionwp.xlsx',sheet_name='Sheet1')
def take_first(elem):
        return elem[0]
def sod(permissiona,permissionb):
        rsod=[]
        ls1=[]
        ls2=[]

    for i in  range(len(per)):
        if per.iloc[i,5]==permissiona:
            ls1.append((per.iloc[i,1],per.iloc[i,4]))

        else:
            pass

    for i in  range(len(per)):
        if per.iloc[i,5]==permissionb:
            ls2.append((per.iloc[i,1],per.iloc[i,4]))

        else:
            pass
    for user in ls1:
        if user in ls2:
             rsod.append(user)
             rsod=list(set(rsod))   

    for i in sorted(rsod,key=take_first):
        print(i)

问题如下-我试图通过运行规则文件来调用sod函数 使用超氧化物歧化酶不会给我带来结果,而是“没有”

l=()
count=0
risk=pd.read_excel('risk.xlsx',sheet_name='Sheet1')
for num in range(len(risk)):

    sod(risk.iloc[num,4],risk.iloc[num,5])   

问题就在这里


Tags: inforlenifrangenumriskper
1条回答
网友
1楼 · 发布于 2024-06-09 12:43:53

至于问题:您是否确定rsod函数中的最后一个条件以及rsod列表不是空的? 另外,带来“无”是否意味着打印输出为“无”

A关于守则的备注: 似乎每个对象类型都是DataFrame,所以使用所有这些for循环可能不是很有效。相反,您应该直接在数据帧上应用矢量化命令,将每个for循环变成一行

您可以在此处了解循环数据帧的不同方法: https://towardsdatascience.com/how-to-make-your-pandas-loop-71-803-times-faster-805030df4f06

相关问题 更多 >