私は長い間、質問に答えを探していましたが、ドキュメンテーションでそれを探していましたが、まだ適切なものが見つかりませんでした。日時の条件で2つのテニスデータセットをマージする
私は2つのデータセットをマージしようとしています:最初のものは2000-2015年のテニスマッチの重要な統計情報、もう1つはテニスマッチの確率、2001-2016の一般統計です。
重大な困難:データセットをマージするためにそれらを使用することは不可能であるので、同様のトーナメントの
- 名前は、多くの場合、データセットで同じではありません。
- 重要な統計情報を持つデータセットでは、トーナメントの開始日のみがあり、その他の場合はすべてのマッチの日付があります。したがって、日付の平等は一般的には機能しません。
以下に、いくつかの列のデータセットが表示される場合があります。最初のデータセットには一致に関する重要な統計が含まれ、2番目のデータセットにはオッズと一般情報が含まれます。私として
matches[['Winner', 'Loser', 'Tournament Start Date']].head()
Winner Loser Tournament Start Date
0 Dupuis A. Ilie A. 2000-05-01
1 Gonzalez F. Mamiit C. 2000-05-01
2 Srichaphan P. Lareau S. 2000-05-01
3 Siemerink J. Gimelstob J. 2000-05-01
4 Stoltenberg J. Moron A. 2000-05-01
all_bets[['Winner', 'Loser', 'Date']].head()
Winner Loser Date of Match
0 Clement A. Gaudenzi A. 2001-01-01
1 Goldstein P. Jones A. 2001-01-01
2 Haas T. Smith L. 2001-01-01
3 Henman T. Rusedski G. 2001-01-01
4 Hewitt L. Arthurs W. 2001-01-01
は、正確なデータセットをマージするための最良の方法は、3つの条件*である:カラムの勝者」、「敗者」との等式...マッチ、トーナメントの日付の間の差開始日は14日だから大きくない:期間とはトーナメントがより長くありません
- 2人のプレイヤーが1つのトーナメントで一度だけ互いに
- を再生することができます。各トーナメントのみ
- 年に一度起こります14日間。 「勝者」と「敗者」の条件の
使い方は明白です:
matches_bets = pd.merge(matches, all_bets, on=["Winner", "Loser"], how="inner")
しかし、私はデータセットをマージする日付の不等式条件を適用する方法を理解していない
I。
*他の列は、データセットをマージする際に使用する方がはるかに優れているわけではありません。このため、ここでは他の列は表示されません。
私が私はあなたが「勝者」と「敗者」のマージを使ってやっていることをやり遂げることができると思うので、他のデータフレームからの日付の14日を超えるレコードを削除するだけです。あなたが残すことは、あなたの3つの条件を満たす記録です。 –
[merge_asof](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.merge_asof.html#pandas.merge_asof)を見ましたか? –