首页 > 解决方案 > 识别数据框中的模式

问题描述

我有以下DF:

游戏 博彩公司 超过1.5 1.5以下 超过2.25 2.25以下 超过2.5 2.5以下 超过3 3岁以下
甲对乙 亚洲赔率 1,2 3,4 2,1 4,1 3,1 4,7 3,3 4,9
甲对乙 巅峰 1,2 3,4 2,1 4,0 3,1 4,6 3,3 4,9

我需要如何设置我的 python 代码来识别模式,如下所示:

查找 Pinnacle < Asianodds for Under2.25 & Under2.5 而在所有其他列中的 Under 与博彩公司相同且所有列中的 Over 与博彩公司相同的游戏

到目前为止,我尝试了这个,但它没有给出预期的结果......:

o_u_types= [1.50,1.75,2.00,2.25,2.50,2.75,3.00,3.50]
for i o_u_types:

                            data_df["Over_{}".format(i)]=Over #In these two lines Over and Under are the two previously scraped values for over and under
                            data_df["Under{}".format(i)]=Under

                            #Identify patterns
                            try:
                                Asian=data_df.iloc[0] #Asian is always line 1 of the df, Pin always line 2
                                Pin=data_df.iloc[1]
                                if Asian['Over_{}'.format(i)] > Pin['Over_{}'.format(i)]:
                                    data_df['over_dominance_{}'.format(i)]=='AsianDominant'
                                
                                elif Asian['Over_{}'.format(i)] < Pin['Over_{}'.format(i)]:
                                    data_df['over_dominance_{}'.format(i)]=='PinDominant'

                                elif Asian['Over_{}'.format(i)] == Pin['Over_{}'.format(i)]:
                                    data_df['over_dominance_{}'.format(i)]=='Parity'


                                if Asian['Under_{}'.format(i)] > Pin['Under_{}'.format(i)]:
                                    data_df['under_dominance_{}'.format(i)]=='AsianDominant'
                                
                                elif Asian['Under_{}'.format(i)] < Pin['Under_{}'.format(i)]:
                                    data_df['under_dominance_{}'.format(i)]=='PinDominant'

                                elif Asian['Under_{}'.format(i)] == Pin['Under_{}'.format(i)]:
                                    data_df['under_dominance_{}'.format(i)]=='Parity'

                                # data_df['over_diff']= Asian['Over'] != Pin['Over']
                                # data_df['under_diff']= Asian['Under'] != Pin['Under']

                                # print(data_df)
                            
                            except:
                                data_df['over_dominance_{}'.format(i)]= "n/a"
                                data_df['under_dominance_{}'.format(i)]= "n/a"

可悲的是,此代码对所有行都返回 n/a,即使 Over/Under 值存在差异。

在我确定了一条线相对于另一条线的优势之后,我想确定一种模式,其中 Pinnacle < Asianodds for Under2.25 & Under2.5 而在所有其他列中的 Under 对于博彩公司来说是相等的,并且在所有列中对于博彩公司来说都相等

标签: pythonpandasdataframe

解决方案


试试看这对你有没有帮助。

您可以转置您的数据框并执行以下操作:

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)

您可以忽略前 2 行(游戏和博彩公司)。

输出如下:

                   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

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


推荐阅读