0
votes

Laisser tomber des observations en double avec des valeurs plus manquantes

J'ai des valeurs dupliquées dans mon DF, mais une des observations a beaucoup de NANS. Je voudrais garder la valeur dupliquée qui a la valeur manquante la plus faible.

Des idées Comment faire cela?

Ceci est un exemple de mon df: xxx

dans cet exemple, je voudrais garder seulement la première observation et le 6ème.

merci


1 commentaires

Est-il déjà garanti que ['b', 'c', 'd'] est dupliqué (avec votre définition de défaut) dans 'id' ou avez-vous également besoin de Vérifier que la duplication avant de tomber


3 Réponses :


1
votes

Vous pouvez déposer n'importe quelle ligne avec un certain nombre de nans avec les éléments suivants:

df = df.dropna(axis=0, thresh=4)  # drop any row that has at least 4 non-nans within it. 


0 commentaires

4
votes

Vous pouvez utiliser df.isna (). somme (axe = 1) code> pour compter la quantité de nans code> par ligne, puis groupby code> id et sélectionnez la ligne avec moins nans code> en utilisant idxmin code> : xxx pré>

Assurez-vous que les valeurs manquantes sont nans code> comme vous avez spécifié, Sinon, commencez par: P>

df.replace('.',np.nan)


1 commentaires

yup c'est beaucoup mieux que le mien



1
votes

Une approche différente qui fait plus que ce que vous avez demandé. Ceci est si certaines valeurs manquantes dans une rangée et différentes sont manquantes dans une autre ligne et vous souhaitez les combiner pour obtenir plus d'informations complètes: xxx

Notez que l'exemple DF est légèrement différent de celui de Votre question donc de montrer où cette approche serait meilleure.

pour ID 1, c'est la même chose que de prendre la première rangée. Mais pour ID 2, il est en mesure de remplir toutes les valeurs, où vos (ou les autres réponses) prendraient une seule rangée, qui aspiraient toutes.

évidemment, cela suppose que les valeurs qui ne sont pas < Code> Nan Restez le même. S'ils ne le font pas, seules les premières occurrences de NaN dans cette colonne seront prises.


0 commentaires