列表理解而不是嵌套for循环

时间:2020-09-26 05:59:20

标签: python pandas for-loop nested

我有这个可行的方法,但是我想将其放入列表理解中以节省计算能力

emp_id=df_hours["EMPLOYEE"]
emp_list=df_item["EMPLOYEE"]

##############
#loop through and get values for the day for hours worked per server, and add them to building df
#############

hours_worked=df_hours["HOURS"]
emp_found=[]
 
for x in range(len(emp_list)):
    for i in range(len(emp_id)):
        if emp_list[x] == emp_id[i]:
            emp_found.append(hours_worked[i])

inex=0
last=len(emp_list)
hours_wored=emp_found[inex:last]
df_item['HRS']=hour_worked

2 个答案:

答案 0 :(得分:0)

我相信这就是您要寻找的

emp_found = [hours_worked[i] for i in range(len(emp_id)) for x in range(len(emp_list)) if emp_list[x] == emp_id[i]]

答案 1 :(得分:0)

这是一种更简短,更优雅的方法:

print(list(set(df_hours["EMPLOYEE"]).intersection(set(df_item["EMPLOYEE"]))))

由于您要查找的是具有所有常用值的列表,因此您可以将每列转换为一个集合,并获得交集。然后,您可以将结果转换回列表。

我发现此语法更短,您可能会说;更多pythonic。