我在python中有一个大的数据框,我想根据多个for循环选择特定的行。一些列中包含列表。我的最终目标是产生了一些优化约束,并通过其他软件通过他们:多重for循环从python中的数据框中选择特殊行
T S W Arrived Departed
[1,2] [4,2] 1 8 10
[3,4,5] [3] 1 12 18
[6,7] [1,2] 2 10 11
. . . . .
. . . . .
def Cons(row):
if row['W'] == w and sum(pd.Series(row['T']).isin([t])) != 0 and sum(pd.Series(row['S']).isin([s])) != 0:
return 1
for w in range(50):
for s in range(30):
for t in range(12):
df.Situation = df.apply(Cons, axis = 1)
A = df[ (df.Situation == 1) ]
A1 = pd.Series(A.Arrived).tolist()
D1 = pd.Series(A.Departed).tolist()
Time = tuplelist(zip(A1,D1))
我怎样才能有效地做到这一点,因为通过多次去为循环需要较长的时间来运行?
从你的代码来看,嵌套循环刚刚经过50 * 30 * 12 = 18000迭代。假设最内层循环的主体没有做任何计算密集型的事情,这应该不是问题。 – xuanluong
@ xuanluong,他的算法是'O(n^3)',这对大数据不是很好 - 但对于我认同的小迭代并不是那么糟 – coder
@coder嗯,大数据,但有多大? 也许OP应该给出数据量级的更多上下文。否则,立方时间复杂性是否足够好或太慢是任何人的猜测。 – xuanluong