[PYTHON] Fonction pour renvoyer plusieurs colonnes à des colonnes uniques dans DataFrame

Fonction fonction

Une telle trame de données multi-colonnes WS000001.JPG

Convertir en un bloc de données à colonnes uniques. WS000002.JPG

Scène utile

--Réparez les colonnes multiples de python en colonnes uniques. Les colonnes --multi sont un peu gênantes lors de la fusion.

Référence multi-colonnes

--Sélectionnez et extrayez n'importe quelle ligne / colonne de pandas MultiIndex: https://note.nkmk.me/python-pandas-multiindex-indexing/

Code réel

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. WS000000.JPG

Number_df après agrégation. Le nombre de personnes et la somme et la moyenne sont sur plusieurs colonnes. WS000001.JPG

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é. WS000002.JPG

À la fin

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

Fonction pour renvoyer plusieurs colonnes à des colonnes uniques dans DataFrame
Fonction pratique pour ajouter des colonnes n'importe où dans Pandas DataFrame
Pour renvoyer char * dans une fonction de rappel à l'aide de ctypes en Python
Fonction pour convertir des colonnes Excel en nombres
Comment obtenir un nom de colonne et un nom d'index spécifiques avec Pandas DataFrame
Comment trouver une colonne d'un type spécifique (str, float, etc.) à partir d'une colonne dans un DataFrame
Comment utiliser les colonnes calculées dans CASTable
Comment réattribuer un index dans pandas dataframe
Ajouter une série à la colonne dans les pandas python
Ajouter des totaux aux lignes et aux colonnes avec des pandas
Comment se moquer d'une fonction publique dans Pytest