识别数据框架中的模式



我有以下DF:

<表类> 游戏 公司 Over1.5 Under1.5 Over2.25 Under2.25 Over2.5 Under2.5 Over3 Under3 tbody><<tr>A和BAsianodds1, 23、42, 14 13, 14, 73, 34 9A和B顶峰1, 23、42, 14 03, 14, 63, 34 9

你的代码基本上是正确的,只是有点乱。我试着让它更简洁明了。因此,假设您的原始DataFrame有两行,称为df,下面是我的代码:

for i in o_u_types:
asian_over = df.at[0, f"Over{i}"]
asian_under = df.at[0, f"Under{i}"]
pin_over = df.at[1, f"Over{i}"]
pin_under = df.at[1, f"Under{i}"]
if asian_over > pin_over:
df[f"overdominant{i}"] = "AsianDominant"
elif asian_over < pin_over:
df[f"overdominant{i}"] = "PinDominant"
else:
df[f"overdominant{i}"] = "Parity"
...REST OF CODE LOGIC

我强烈建议使用f-string:例如,用f"Over{i}"代替"Over{}".format(i)。还建议使用else来完成每组if-elif语句。在您的例子中,由于ifelif分别测试><,因此else必然是==

试着看看这是否对你有帮助。

你可以把你的数据框转置,这样做:

df = df.T
df.loc[df[0] > df[1],'over_dominance'] = 'AsianDominant'
df.loc[df[0] < df[1],'over_dominance'] = 'PinDominant'
df.loc[df[0] == df[1],'over_dominance'] = 'Parity'
print (df)

可以忽略前两行(Game and Bookmaker)

输出如下:

0         1 over_dominance
Game          A vs B    A vs B         Parity
Bookmaker  Asianodds  Pinnacle    PinDominant
Over1.5          1,2       1,2         Parity
Under1.5         3,4       3,4         Parity
Over2.25         2,1       2,1         Parity
Under2.25        4,1       4,0  AsianDominant
Over2.5          3,1       3,1         Parity
Under2.5         4,7       4,6  AsianDominant
Over3            3,3       3,3         Parity
Under3           4,9       4,9         Parity

这可能不是最终的答案,但我试图给你一些选择来考虑。

最新更新