首页 > 解决方案 > 合并具有相同列的熊猫数据框

问题描述

我正在尝试合并两个数据框,一个包含赛马获胜赔率的详细信息,另一个包含位置赔率。它们共享一些相同的列名。我目前在马的名字上得到重复,我不认识的几率。我认为问题正在发生,因为有些比赛没有地方市场,只有获胜市场,所以这很令人困惑。下面是左侧获胜表的示例,右侧放置。

Time   Horse      Odds   Result     Time   Horse      Odds_P Result_P     
13:55  Go faster  5.0    1          13:55  Go faster  5.0    1
14:10  Slow down  4.0    0

我希望能够将 Odds_P 和 Result_P 添加到获胜数据帧的末尾以更快地进行,并删除没有相应地方市场的条目。

我尝试过 concat、join 和 merge,所有这些都向我展示了一些重复的马名,我不认识的可能性。

任何帮助将不胜感激

标签: pythonpandasdataframemerge

解决方案


如果我理解正确,您的 odds_p 数据框如下所示:

    Time      Horse  Odds  Result
0  13.55  Go faster   5.0       1
1  14:10  Slow down   4.0       0

result_p 看起来像:

    Time      Horse  Odds_P  Result_P
0  13.55  Go faster     5.0         1

我将把odds_p数据框的最后两列重命名为Odds_P和Result_P:

odds_p.rename(columns = {'Odds':'Odds_P', 'Result':'Result_P'}, inplace = True)

现在使用 RIGHT 连接合并两者:

final_p = pd.merge(odds_p, result_p, on = ['Time', 'Horse', 'Odds_P', 'Result_P'], how = 'right')

您的最终输出将如下所示:

    Time      Horse  Odds_P  Result_P
0  13.55  Go faster     5.0         1

推荐阅读