[英]Break out of the 'nested loop' when condition is met, and then continue the loop of the parent loop
我有一個嵌套循環,但我只需要子循環的第一個條件。 所以我需要子循環在滿足條件時停止,並為父循環的索引重新啟動循環。 這個例子應該澄清。 我有 dataframe 的前幾行:
M# Date Time Day Team Team2 Venue Team3 days_between1 next_game1
26 27 2021-05-01 7.30 pm Sat MI CSK Delhi MI CSK 0 0
27 28 2021-05-02 3.30 pm Sun RR SRH Delhi RR SRH 0 0
28 29 2021-05-02 7.30 pm Sun PK DC Ahmedabad PK DC 0 0
29 30 2021-05-03 7.30 pm Mon KKR RCB Ahmedabad KKR RCB 0 0
30 31 2021-05-04 7.30 pm Tue SRH MI Delhi SRH MI 0 0
31 32 2021-05-05 7.30 pm Wed RR CSK Delhi RR CSK 0 0
32 33 2021-05-06 7.30 pm Thur RCB PK Ahmedabad RCB PK 0 0
33 34 2021-05-07 7.30 pm Fri SRH CSK Delhi SRH CSK 0 0
34 35 2021-05-08 3.30 pm Sat KKR DC Ahmedabad KKR DC 0 0
我正在嘗試計算特定球隊比賽之間的天數。 例如,MI 在第一個和第四個播放。 我創建了一個列“Team3”,其中包含兩支球隊的名稱,以便更輕松地設置條件。 這是我的嘗試:
for i in range(26, df.last_valid_index()):
a = df['Team'][i]
for j in range(i,df.last_valid_index()):
t = df['Team3'][j]
if t.find(a) != -1:
df['days_between1'][i] = df['Date'][j] - df['Date'][i]
結果應如下所示:
M# Date Time Day Team Team2 Venue Team3 days_between1 next_game1
26 27 2021-05-01 7.30 pm Sat MI CSK Delhi MI CSK 3 0
27 28 2021-05-02 3.30 pm Sun RR SRH Delhi RR SRH 3 0
28 29 2021-05-02 7.30 pm Sun PK DC Ahmedabad PK DC 3 0
29 30 2021-05-03 7.30 pm Mon KKR RCB Ahmedabad KKR RCB 3 0
30 31 2021-05-04 7.30 pm Tue SRH MI Delhi SRH MI 1 0
31 32 2021-05-05 7.30 pm Wed RR CSK Delhi RR CSK NA 0
32 33 2021-05-06 7.30 pm Thur RCB PK Ahmedabad RCB PK NA 0
33 34 2021-05-07 7.30 pm Fri SRH CSK Delhi SRH CSK NA 0
34 35 2021-05-08 3.30 pm Sat KKR DC Ahmedabad KKR DC NA 0
您可以將循環移動到DataFrame.apply()
中。
找到與給定team
匹配的first_valid_index()
並從team
的日期中減去匹配的日期:
def between(row):
index, team = row.name, row.Team
mask = df[['Team', 'Team2']].loc[index+1:] == team
match = mask.replace(False, np.nan).first_valid_index()
return df.loc[match, 'Date'] - df.loc[index, 'Date'] if match else np.nan
df.days_between1 = df.apply(between, axis=1)
# M# Date Time Day Team Team2 Venue Team3 days_between1 next_game1
# 26 27 2021-05-01 7.30 pm Sat MI CSK Delhi MI CSK 3 days 0
# 27 28 2021-05-02 3.30 pm Sun RR SRH Delhi RR SRH 3 days 0
# 28 29 2021-05-02 7.30 pm Sun PK DC Ahmedabad PK DC 4 days 0
# 29 30 2021-05-03 7.30 pm Mon KKR RCB Ahmedabad KKR RCB 5 days 0
# 30 31 2021-05-04 7.30 pm Tue SRH MI Delhi SRH MI 3 days 0
# 31 32 2021-05-05 7.30 pm Wed RR CSK Delhi RR CSK NaT 0
# 32 33 2021-05-06 7.30 pm Thur RCB PK Ahmedabad RCB PK NaT 0
# 33 34 2021-05-07 7.30 pm Fri SRH CSK Delhi SRH CSK NaT 0
# 34 35 2021-05-08 3.30 pm Sat KKR DC Ahmedabad KKR DC NaT 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.