0
votes

Python combinant des noms avec des valeurs manquantes

J'ai un dataframe de pandas de noms comme indiqué. XXX PRE>


personname = df['firstname']+str(' ')+df['othernames'].fillna('')+dfLinks2['surname']
df['personname'] = personname


5 commentaires

Vous n'êtes pas d'espace après df ['autres noms']


@ komatiraju032 J'ai dit que si j'ajoute un autre str ('') puis ceux qui ont NA dans les noms de colline finissent avec deux espaces par exemple. Jennifer Catto que je ne veux pas.


Ensuite, utilisez str.join ()


Vous pouvez également travailler autour de celui-ci par df ["personname '] = (DF [" premier "] +" "+ df [" autre "]. Fillna (" @ ") +" "+ DF [" Nom de famille " ]). str.replace ("@", "") .


@Mobeus Zoom j'ai fourni une méthode beaucoup plus rapide. Juste au cas où vous auriez des morceaux de données


5 Réponses :


4
votes

Savez-vous des fonctions de cordes de Python? Vous pouvez combiner ces méthodes avec des pandas.

permet d'utiliser pile code> le long de l'index pour supprimer les valeurs nan code>. p>

Nous pouvons utiliser groupeby code> et ''Join code> Pour créer votre colonne Nom complet P>

names = (
    df["firstname"] + " " + df["othername"].fillna("") + " " + df["surname"]
).replace("\s+", " ", regex=True)

print(names)

0         Sassa Radomirovic
1            Jennifer Catto
2            Jennifer Catto
3            Jennifer Catto
4             Vanessa Pinho
5    Alexander Stuart Clark
6    Alexander Stuart Clark
7    Alexander Stuart Clark


1 commentaires

@Datanovice bonnes choses. Trouvé légèrement plus lent. A fait du timing dans ma réponse



1
votes

Essayez: strong> (pas une bonne solution si) xxx pré>

df: strong> p>

    firstname   othername   surname     name
0   Sassa       NaN         Radomirovic Sassa Radomirovic
1   Jennifer    NaN         Catto       Jennifer Catto
2   Jennifer    NaN         Catto       Jennifer Catto
3   Jennifer    NaN         Catto       Jennifer Catto
4   Vanessa     NaN         Pinho       Vanessa Pinho
5   Alexander   Stuart      Clark       Alexander Stuart Clark
6   Alexander   Stuart      Clark       Alexander Stuart Clark
7   Alexander   Stuart      Clark       Alexander Stuart Clark


1 commentaires

@ Pygirl j'ai besoin de la même chose au travail et j'avais utilisé str.cat () méthode comme indiqué ci-dessous. Les méthodes de Datanovice étaient légèrement plus lentes. Voir timing ci-dessous. Toutes mes excuses pour la poste tardive



1
votes

Je pense que vous pouvez également utiliser, .str.cat comme ceci: xxx

sortie: xxx < H3> Ajout de timings: xxx

graphique:

Entrez l'image Description ici


0 commentaires

0
votes

Essayez: xxx

sortie: xxx


0 commentaires

1
votes

J'ai besoin de la même chose au travail et j'avais utilisé str.cat () code> comme indiqué ci-dessous. @Datanovice était légèrement plus lent xxx pre>

@wwnde p>

%timeit (df['firstname'].str.cat(df[['othername', 'surname']], sep=' ', na_rep='').replace('\s\s', ' ', regex=True))
1.54 ms ± 133 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)


0 commentaires