python - 识别数据框中的模式
问题描述
我有以下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 对于博彩公司来说是相等的,并且在所有列中对于博彩公司来说都相等
解决方案
试试看这对你有没有帮助。
您可以转置您的数据框并执行以下操作:
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
这可能不是最终的答案,但我试图给你考虑的选择。
推荐阅读
- azure - 尝试获取新的访问令牌时获取“unauthorized_client”,为什么?
- c# - 使用 c# 将 Excel 保存为 CSV 格式
- mobile - Dart - 在生成多个隔离时在控制台中获取“格式错误的消息”
- css - 默认电子邮件签名的链接颜色和 TD / TR 悬停颜色
- c - C中的两个顺序赋值语句可以在硬件上乱序执行吗?
- azure - Azure DevOps 托管代理 - 将工具(PS 模块)添加到代理
- python - Python - 套接字似乎无法接受连接
- java - Java 使用 SQL 语句从数据库中获取数据
- php - 使用 empty() 调整具有多个变量的输出
- database - 什么数据存储/数据库在 S3 之上运行?