我在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