Un journal de mots: Dieu Excel augmentera pour toujours.
Curieusement, il existe encore de nombreux cas dans le monde où Excel comme le tableau est réalisé directement.
Nom | Position | âge | Nom | Position | âge | |
---|---|---|---|---|---|---|
souris ou rat | Dieu | 60 | lapin | Directeur | 24 | |
vache | Réalisateur | 48 | Tatsu | 〃 | 12 | |
tigre | 〃 | 36 | Serpent | esclave | 1 | |
Mogura | Employé humble | 20 | ||||
ours | 〃 | 20 | Mise à jour: aujourd'hui |
Tableau A (〃 représente la combinaison de cellules. Il y a une ligne vide entre le tigre et le mogura) Je n'ai pas besoin d'une date de mise à jour, il serait donc très utile que vous puissiez le faire comme indiqué dans le tableau ci-dessous, mais il existe diverses choses dans le monde telles que la commodité d'impression et le shinto.
Nom | Position | âge |
---|---|---|
souris ou rat | Dieu | 60 |
vache | Réalisateur | 48 |
tigre | Réalisateur | 36 |
Mogura | Employé humble | 20 |
ours | Employé humble | 20 |
lapin | Directeur | 24 |
Tatsu | Directeur | 12 |
Serpent | esclave | 1 |
Tableau B
Envisagez de prendre le tableau A, de le convertir en tableau B, puis de l'utiliser comme données.
Pour le moment, voici ce que j'ai assemblé avec force brute. Très éléphant à mon avis. Paon.
Première étape
dataframe_raw = pd.read_excel("Tableau A.xlsx")
df_A=dataframe_raw.iloc[:,[*range(0,3)]].dropna(how="all").fillna(method='ffill').astype({'âge':int})
#0 à partir de données brutes dans iloc-Retirez 2 rangées.[*range()]C'est pratique car vous n'avez pas besoin d'écrire 0, 1, 2 ... etc.
#dropna()Et 0-Lignes supprimées où les trois colonnes sont NaN
#fillna()Tirera les données directement au-dessus de NaN afin que vous puissiez remplir les espaces créés dans les cellules fusionnées.
#Utilisez astype pour changer l'âge lu par type float en type int
À ce stade, df_A ressemble au tableau ci-dessous. La ligne vide et "〃" ont disparu, alors Yoshi!
Nom | Position | âge |
---|---|---|
souris ou rat | Dieu | 60 |
vache | Réalisateur | 48 |
tigre | Réalisateur | 36 |
Mogura | Employé humble | 20 |
ours | Employé humble | 20 |
Deuxième étape
df_B=dataframe_raw.iloc[:,[*range(4,7)]].dropna(how="all").fillna(method='ffill')
#Fondamentalement df_Identique à A. Cependant, normalement pd_Lors de la lecture avec read, "Pour le même nom de colonne.Notez qu'il existe un symbole distinctif tel que 1 "
df_B.drop(df_B.tail(1).index,inplace=True)
#Puisque les informations de date de mise à jour à la fin sont inutiles, elles sont coupées.
df_B.astype({'âge.1':int})
df_B.columns=("Nom","Position","âge")
#Comme mentionné ci-dessus, df_Dans la colonne de B.Puisqu'il a un 1, renommez-le
dataframe_comp=pd.concat([df_A,df_B])
#Puisque les colonnes sont identiques, il est complété par une jonction verticale avec concat.
Le produit fini est le tableau B écrit en introduction.
Où s'inquiéter
df_B.astype({'âge.1':int})
df_B.columns=("Nom","Position","âge")
Je pense que ce domaine est très gaspilleur. Vous ne pouvez même pas les mettre en ligne ... Il semble y avoir un moyen d'éviter de spécifier le type int au moment de la lecture et du changement de nom des colonnes.
En outre, ** Y a-t-il un moyen de gérer ce travail lui-même en un seul coup? Je soupçonne **. Ce genre d'anxiété a toujours existé depuis que j'ai appris la fonction de fusion dans le passé. Référence: https://qiita.com/wellwell3176/items/5e39fd44590603d13291
https://www.366service.com/jp/qa/ee53add5af3296037ee057e49442a821
https://www.it-swarm-ja.tech/ja/python/pandas%E3%83%87%E3%83%BC%E3%82%BF%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E6%9C%80%E5%BE%8C%E3%81%AE%E8%A1%8C%E3%82%92%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/1050572731/
Recommended Posts