1
votes

Comment choisir quel nan dans l'en-tête de colonne

J'aimerai choisir le premier nan à être nommé école tandis que l'autre nan à être nommé grade.

En-tête de colonne d'origine:

Name Address School Class Subject School

Voici le résultat que je souhaite:

df = df.rename(columns={np.nan:'School'})

Quand j'ai essayé ce code:

Name Address School Class Subject Grade

Voici mon résultat avec mon code:

Name Address nan Class Subject nan 


0 commentaires

3 Réponses :


0
votes

Vous pouvez parcourir les colonnes et si vous rencontrez un nan , remplacez-le par le bon:

cols = []
count = 1
for column in df.columns:
    if column == np.nan:
        if count == 1:
            cols.append('School')
        else if count == 2:
            cols.append('Grade')
        else:
            cols.append(column)
        count+=1
    else:
        cols.append(column)
df.columns = cols


1 commentaires

Existe-t-il un moyen de spécifier nan sans boucle?



1
votes

Ce que je vais faire

s=df.columns.to_series()
s[s.isnull()]=['school','grade']
df.columns=s


1 commentaires

J'aime celui-ci parce que vous n'avez pas besoin de connaître à l'avance ou de comprendre les noms de colonnes non nan en premier.



1
votes
df.columns = ["Name", "Address", "School", "Class", "Subject", "Grade"]

0 commentaires