【问题标题】:Merging pandas dataframes with same columns合并具有相同列的熊猫数据框
【发布时间】:2018-09-18 12:28:45
【问题描述】:

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

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,所有这些都向我展示了一些重复的马名,而且几率我不认识。

任何帮助将不胜感激

【问题讨论】:

  • 我仍然无法理解你在说什么。您能否添加您的预期输出?还有,你可能尝试过的代码?
  • 嗨,伙计,当然。所以我的预期输出是:Time Horse Odds Result Odds_P Result_P 13:55 Go faster 5.0 1 5.0 1
  • 嗯,我似乎无法为您提供一个好的格式,但我基本上希望odds_p 和 result_p 加入获胜数据帧的末尾(左侧的那个)并丢弃14:10 的比赛来自 win 数据框,因为它没有对应的地方市场
  • 我尝试过:total_data = df_win.merge(df_place, on='SELECTION_NAME', how='outer') 和许多其他变体,但我得到了一些奇怪的结果。这让我最接近我想要的,但我仍然让马出现在不同的比赛中,那不应该在那里,就像它在将数据连接在一起的过程中出现了一个小故障。我知道数据框都是正确的,因为我已经通过并在 excel 中加入了它们

标签: python pandas dataframe merge


【解决方案1】:

如果我理解正确,您的 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

【讨论】:

  • 感谢您的帮助,伙计
猜你喜欢
  • 2020-11-27
  • 2016-08-12
  • 2022-01-04
  • 1970-01-01
  • 2020-08-21
  • 2020-09-21
  • 1970-01-01
  • 2022-11-17
  • 1970-01-01
相关资源
最近更新 更多