La fusion d'un DataFrame Pandas implique la transposition de données d'un format large vers un format long . Ceci est utile lors de la manipulation de données à des fins d’analyse, de visualisation ou à d’autres fins. Examinons différents scénarios de fusion avec des exemples de problèmes et leurs solutions correspondantes :
Question : Comment faire fondre un DataFrame pour que le le format suivant est atteint ?
Name Age Subject Grade 0 Bob 13 English C 1 John 16 English B 2 Foo 16 English B 3 Bar 15 English A+ 4 Alex 17 English F 5 Tom 12 English A 6 Bob 13 Math A+ 7 John 16 Math B 8 Foo 16 Math A 9 Bar 15 Math F 10 Alex 17 Math D 11 Tom 12 Math C
Solution :
Pour faire fondre le DataFrame, utilisez df.melt(). Spécifiez les id_vars (les colonnes doivent rester dans leur forme d'origine) ainsi que var_name et value_name pour les nouveaux noms de colonnes :
pd.melt(df, id_vars=['Name', 'Age'], var_name='Subject', value_name='Grade')
Question : Comment faire fondre le DataFrame du problème 1 et filtrer le « anglais » column?
Solution :
Utilisez value_vars dans df.melt() pour spécifier les colonnes à fondre. Dans ce cas, seul ['Math'] est sélectionné :
pd.melt(df, id_vars=['Name', 'Age'], value_vars='Math', var_name='Subject', value_name='Grade')
Question : Comment trier les données fondues données du problème 1 par score et regroupez les élèves par nom ?
Solution :
Utilisez .groupby() et .agg() sur le DataFrame fondu pour regrouper par « Grade » et concaténer les noms et les sujets en virgule -chaînes séparées :
melted_df.groupby('Grade', as_index=False).agg(", ".join)
Question : Comment faire fondre un DataFrame qui a été fondu ?
Solution :
Utiliser DataFrame.pivot_table () pour défondre le DataFrame. Spécifiez les valeurs, l'index et les colonnes.
melted_df.pivot_table('Grades', ['Name', 'Age'], 'Subject', aggfunc='first').reset_index().droplevel(level=0, axis=1)
Question : Comment regrouper le DataFrame par nom et séparer les matières et les notes par virgule ?
Solution :
Faire fondre le DataFrame et utiliser .groupby() et .agg() pour concaténer les sujets et les notes :
pd.melt(df, id_vars=['Name'], var_name='Subject', value_name='Grade').groupby('Name', as_index=False).agg(", ".join)
Question :Comment faire fondre toutes les colonnes d'un DataFrame ?
Solution :
Utiliser df.stack( ).reset_index() pour transposer le DataFrame :
pd.melt(df, id_vars=None, var_name='Column', value_name='Value')
Ces solutions démontrent la polyvalence de DataFrames de pandas fondants et infondables pour manipuler les données à diverses fins.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!