Different Test Set and Training Set Distribution
Great question, this is what is known in Machine Learning paradigm as either
  "Covariate Shift", or "Model Drift" or "Nonstationarity" and so on.


One of the critical assumption one would make to build a machine learning model for future prediction is that unseen data (test) comes from the same distribution as training data! However, in reality this rather simple assumption breaks easily and upcoming data (its distribution) changes over time for many reasons. For those who may not be familiar with this very important problem, I encourage looking here or post! 

To me, your question falls into the same category. Although I do not have the perfect solution (an implementation to offer), but I think you may look: 


This blog post gives you a simple way to handle the subsampling of training data with code provided in Python!
Check this research paper. They propose to solve the problem by reweighting the training data so that the distribution of training is closer to the distribution of test using Kullback-Leibler Importance Estimation Procedure base on "Kullback-Leibler divergence" theorem. I do not know if they provide an implementation or it can be implemented easily, but I think it might worth digging as it sounds a professional way to deal the distribution mismatch. 


QUICK update (a good solution): I found a Python implementation of KLIEP algorithm of that research paper (last point) to find those weights. It rather seems easy to use! Basically it resamples the training by putting weights (via the KLIEP algorithm) so that the assumption of having a similar distribution of train and test holds true as much as possible.