Une telle trame de données multi-colonnes
Convertir en un bloc de données à colonnes uniques.
--Réparez les colonnes multiples de python en colonnes uniques. Les colonnes --multi sont un peu gênantes lors de la fusion.
--Sélectionnez et extrayez n'importe quelle ligne / colonne de pandas MultiIndex: https://note.nkmk.me/python-pandas-multiindex-indexing/
python
#Une fonction qui convertit les noms de colonne dans les première et deuxième lignes de df en noms de colonne concaténés
def rename_multicol(df):
df_col=df.columns #Copier le nom de la colonne
df = df.T.reset_index(drop=False).T #Réinitialiser le nom de la colonne une fois
for i in range(df.shape[1]): #Nom de colonne nouvellement défini
rename_col = {i:"".join(df_col[i])}
df = df.rename(columns = rename_col)
df = df.drop(["level_0","level_1"],axis=0)
return df
Voici un exemple d'utilisation de cette fonction.
python
company_list =["A","B","C","D","E","F","G"]
pref_list = ["Tokyo","Okinawa", "Tokyo", "Kanagawa", "Kanagawa", "Tokyo", "Okinawa"]
num_list = [10,3,6,4,5,7,2]
df = pd.DataFrame({"Nom de la compagnie":company_list,
"Préfectures":pref_list,
"Nombre de personnes":num_list})
#Calculer le nombre total et moyen de personnes
number_df = df.groupby("Préfectures",as_index=False).agg({"Nombre de personnes":["sum","mean"]})
#Convertir en une seule colonne
number_df_rename = rename_multicol(number_df)
Supposons que vous souhaitiez agréger le total et la moyenne du nombre de personnes pour chaque préfecture à partir de df. 'df.groupby ("prefecture", as_index = False) .agg ({"number of people": ["sum", "mean"]})' est utilisé pour compter en même temps.
Number_df après agrégation. Le nombre de personnes et la somme et la moyenne sont sur plusieurs colonnes.
Number_df_rename converti en colonnes uniques à l'aide de la fonction rename_multicol. Vous pouvez maintenant le combiner avec une autre trame de données avec l'état comme clé.
En premier lieu, j'ai cherché "annuler plusieurs colonnes" sans connaître les multicolonnes ... Il est pratique de dire la table seule, mais c'était difficile à gérer en considérant la jointure.
Recommended Posts