【发布时间】:2020-06-26 06:43:30
【问题描述】:
我想根据“马”列比较数据框。我想找到特定马的数据框 1 中的“赔率”大于数据框 2 中的“平均赔率”的行。例如,这将是“Indian Sounds”的数据帧 1 中的第 0 行和第 1 行。我希望输出包括“比赛”、“马”、“博彩公司”和“赔率与平均赔率之间的差异”。
数据框 1:
Race Horse Bookmaker Odds
0 Bath R2 Indian Sounds BetEasy 2.65
1 Bath R2 Indian Sounds Neds 2.45
2 Bath R2 Indian Sounds Sportsbet 2.20
3 Bath R2 Hello BetEasy 4.2
4 Bath R2 Hello Neds 4.1
5 Bath R2 Hello Sportsbet 4
数据框 2:
Horse AvgOdds
0 Indian Sounds 2.43
1 Hello 4.1
构建数据框的代码:
cols1 = ['Race', 'Horse', 'Bookmaker', 'Odds']
df1 = pd.DataFrame(data=data1, columns=cols1)
cols2 = ['Race', 'Horse', 'Bookmaker', 'AvgOdds']
df2 = pd.DataFrame(data=data1, columns=cols2)
df3 = df2.groupby(by='Horse', sort=False).mean()
df3 = df3.reset_index()
df4 = round(df3,2)
df1[df1['Odds'] > df4['AvgOdds']])
当我使用此代码时,我收到一条错误消息,说只能比较具有相同标签的 Series 对象。我认为这是因为它试图将数据帧 1 中的第 0 行与数据帧 2 中的第 0 行进行比较,依此类推,这不起作用,因为数据帧 1 中有更多行。我需要它来引用第 0 行数据帧 1 中的 -2 和数据帧 2 中的第 0 行,然后数据帧 1 中的第 3-5 行和数据帧 2 中的第 1 行。
【问题讨论】:
-
你能把你的问题作为一个最小的可重现问题吗? stackoverflow.com/questions/20109391/…