我在 Tableau 中编写了一个巨大的 If-Else 代码编译器只需要花费大量时间来执行此代码,因此我想将它移到 Python 上。
我的 df:
match_datetime country league home_team away_team predicted_home_score predicted_away_score predicted_total_score predicted_score_difference
38342 2021-09-15 09:30:00 Australia FFA Cup Edge Hill Gold Coast Knights 1.007927 1.920937 2.928864 0.913010
43807 2021-09-21 09:30:00 Australia FFA Cup Queensland Lions Casuarina 3.333684 0.761920 4.095605 2.571764
49031 2021-09-26 05:00:00 Australia FFA Cup Floreat Athena Adelaide United 0.688574 2.832026 3.520600 2.143452
53094 2021-09-29 10:00:00 Australia FFA Cup ECU Joondalup Adelaide Olympic 2.042965 1.688064 3.731028 0.354901
54080 2021-09-29 10:00:00 Australia FFA Cup ECU Joondalup Adelaide Olympic 1.803334 1.554651 3.357985 0.248683
我有一个 VLOOKUP 表,可以解释这些值以提供输出
df_list:
Country League Win DNB O 1.5 U 4.5
84 Australia A-League 1.45 1.45 3.60 2.2
85 Australia A-League Women 1.04 0.65 3.15 2.4
86 Australia Brisbane Premier League 1.04 0.65 3.10 2.4
87 Australia Capital Territory 1.04 0.65 3.10 2.4
88 Australia FFA Cup 1.49 1.49 3.58 2.4
我的 If-Else 代码简单地说是:
IF df[“country”] = df_list[“Country”] AND df[“league”] = df_list[“League”] AND df[“predicted_score_difference”] > df_list[“Win”] AND df[“predicted_total_score”] > df_list[“O 1.5”]
THEN “W & O 1.5”
ELSEIF df[“country”] = df_list[“Country”] AND df[“league”] = df_list[“League”] AND df[“predicted_score_difference”] > df_list[“Win”]
THEN “W”
ELSEIF df[“country”] = df_list[“Country”] AND df[“league”] = df_list[“League”] AND df[“predicted_total_score”] > df_list[“O 1.5”]
THEN “O 1.5”
ELSEIF df[“country”] = df_list[“Country”] AND df[“league”] = df_list[“League”] AND df[“predicted_score_difference”] > df_list[“DNB”] AND df[“predicted_score_difference”] < df_list[“Win”] AND df[“predicted_total_score”] > df_list[“O 1.5”]
THEN “O 1.5 or DNB”
ELSEIF df[“country”] = df_list[“Country”] AND df[“league”] = df_list[“League”] AND df[“predicted_score_difference”] > df_list[“DNB”] AND df[“predicted_score_difference”] < df_list[“Win”]
THEN “DNB”
ELSEIF df[“country”] = df_list[“Country”] AND df[“league”] = df_list[“League”] AND df[“predicted_score_difference”] > df_list[“Win”] AND df[“predicted_total_score”] < df_list[“U 4.5”]
THEN “W & U 4.5”
ELSEIF df[“country”] = df_list[“Country”] AND df[“league”] = df_list[“League”] AND df[“predicted_total_score”] < df_list[“U 4.5”]
THEN “U 4.5”
ELSEIF df[“country”] = df_list[“Country”] AND df[“league”] = df_list[“League”] AND df[“predicted_score_difference”] < df_list[“DNB”]
THEN “N”
其中 df_output 是结果数据帧
例如对于
match_datetime country league home_team away_team predicted_home_score predicted_away_score predicted_total_score predicted_score_difference
38342 2021-09-15 09:30:00 Australia FFA Cup Edge Hill Gold Coast Knights 1.007927 1.920937 2.928864 0.913010
df_output[“result”] 将是 “DNB”
如何在 Python 中编写相同的代码以节省时间?