我有两个列表:list1和list2,以及一个数据帧:df1。我正在使用一些过滤器将一些from_account值附加到空列表p。
list1的几个值= [128195,101643,143865,59455,108778,66042,138456,66043]
和list2的几个值= [128594、128599、128596、128588、128168、125410、127166、127078]
p=[]
for i in list1:
for j in list2:
ss=df1[df1.to_account==i]
for k in range(0,len(ss.from_account)):
if(ss.from_account.values[k]==j):
p.append(j)
使用循环需要花费大量的执行时间,是否有其他选择可以实现相同的结果,但执行时间却最少。
答案 0 :(得分:0)
看起来ss.from_account.values
是一个列表,因此您无需检查变量k
即可遍历它,而只需检查该值是否在该列表中即可:
p=[]
for i in list1:
ss=df1[df1.to_account==i]
for j in list2:
if j in ss.from_account.values:
p.append(j)
我进一步将ss
的声明移到了第二个循环之外,所以您只做了一次。我想您甚至可以进一步优化它:
p=[]
for i in list1:
ss=df1[df1.to_account==i]
p += [j for j in list2 if j in ss.from_account.values]