我有这个可行的方法,但是我想将其放入列表理解中以节省计算能力
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
答案 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。