Un journal de mots: Ces jours-ci, les jours de lutte contre Dieu Excel continuent.
| No. | Nom | âge | 
|---|---|---|
| 1 | Taro Tanaka | 33 | 
| 2 | Suzuki Jiro | 22 | 
| 3 | Saburo Tanaka | 11 | 
Il n'y a rien de mal à traiter le tableau ci-dessus comme des données, Lors de la sortie, il y a une demande qui "veuillez faire comme indiqué dans le tableau ci-dessous".
| No. | Nom | âge | 
|---|---|---|
| 1 | Tanaka (épais) | 33 | 
| 2 | Suzuki | 22 | 
| 3 | Tanaka (3) | 11 | 
Étonnamment, je n'ai pas trouvé de page qui effectue ce traitement elle-même, alors je publierai le résultat de la mise en œuvre.
PRG
dataframe_raw = pd.read_excel("Liste.xlsx")
df=dataframe_raw["Nom"].str.split(' ',expand=True)
#Dans ce cas, le nom a été divisé par l'espace pleine largeur, donc divisez-le en deux colonnes.
Si vous divisez par fractionnement, dataframe_process sera comme indiqué dans le tableau ci-dessous, alors vérifiez les noms de famille en double à partir d'ici. S'il y a des doublons, un traitement spécial est utilisé, sinon le nom de famille est utilisé tel quel.
| 0 | 1 | 
|---|---|
| Tanaka | Taro | 
| Suzuki | Jiro | 
| Tanaka | Saburo | 
python
df["Nom"]=""
 #Ajouter la colonne de stockage à la troisième colonne
for i in range(0,len(df)):
 #i à 0~Boucle à la longueur de la liste
  NAME = df.at[i,0]
  check_count=(df[0]==NAME).sum()
 #Comptez le nombre de chaînes de caractères stockées dans la 0ème colonne de la i-ème ligne (s'il y en a 2 ou plus, il y a une personne avec le même nom de famille)
  if check_count>=2:
    df.at[i,"Nom"]=df.at[i,0]+"("+df.at[i,1][0]+")"
 #S'il y a des doublons, la chaîne de caractères dans la 0ème colonne +("0ème caractère de la chaîne de caractères de la 1ère colonne")Remplacer
  else :
    df.at[i,"Nom"]=df.at[i,0]
 #S'il n'y a pas de duplication, la chaîne de caractères dans la 0ème colonne de la i-ème ligne +(0ème caractère de la chaîne de caractères dans la 1ère colonne de la ligne i)Remplacer
Avec ce processus, le bloc de données sera comme indiqué dans le tableau ci-dessous, vous pouvez donc l'utiliser en remplaçant ou en combinant les colonnes de nom.
| 0 | 1 | Nom | 
|---|---|---|
| Tanaka | Taro | Tanaka (épais) | 
| Suzuki | Jiro | Suzuki | 
| Tanaka | Saburo | Tanaka (3) | 
Je trouve que c'est relativement propre, mais j'ai peur de ce qu'il faut faire si une liste avec le même nom et le même nom apparaît.
Recommended Posts