La valeur manquante de l'imputation en python à l'aide de KNN

J'ai un jeu de données qui ressemble à ceci

1908    January 5.0 -1.4
1908    February    7.3 1.9
1908    March   6.2 0.3
1908    April   NaN   2.1
1908    May NaN   7.7
1908    June    17.7    8.7
1908    July    NaN   11.0
1908    August  17.5    9.7
1908    September   16.3    8.4
1908    October 14.6    8.0
1908    November    9.6 3.4
1908    December    5.8 NaN
1909    January 5.0 0.1
1909    February    5.5 -0.3
1909    March   5.6 -0.3
1909    April   12.2    3.3
1909    May 14.7    4.8
1909    June    15.0    7.5
1909    July    17.3    10.8
1909    August  18.8    10.7  

Je veux remplacer le NaNs à l'aide de KNN que la méthode. J'ai regardé sklearns Imputer classe, mais il ne supporte que la moyenne, la médiane et le mode d'imputation. Il y a une demande de fonctionnalité ici mais je ne pense pas que des thats été mises en œuvre dès maintenant. Toutes les idées sur la façon de remplacer le NaNs à partir de les deux dernières colonnes à l'aide de KNN?

Modifier:
Depuis que j'ai besoin d'exécuter des codes sur un autre environnement, je n'ai pas le luxe de l'installation des packages. sklearn, les pandas, numpy et d'autres packages standard sont les seuls que je peux utiliser.

Sklearn semble être très proche de la libération de cette: github.com/scikit-learn/scikit-learn/pull/9212

OriginalL'auteur Clock Slave | 2017-07-26