J'ai un dataframe pandas qui ressemble à ceci:
pd.pivot_table(df, 'VALUE', 'COLUMN_NAME', ['YEAR1', 'YEAR2']) YEAR1 2013 2014 YEAR2 2014 2015 COLUMN_NAME Column1 0.042835 0.0336 Column2 0.004406 0.0169
Où pour chaque COLUMN_NAME, YEAR1 et YEAR2, une VALEUR est calculée. Je souhaite regrouper le dataframe de manière à ce qu'il soit unique sur COLUMN_NAME, où les colonnes ressemblent à ce qui suit:
df_desired = COLUMN_NAME Value_from_2013_2014 Value_from_2014_2015 ... 0 Column1 0.042835 0.033600 1 Column2 0.004406 0.016900 ...
Je peux réaliser ce que je veux avec le code ci-dessous, mais il crée des colonnes MultiIndex, comment puis-je y parvenir? Merci pour l'aide.
df = COLUMN_NAME YEAR1 YEAR2 VALUE 0 Column1 2013 2014 0.042835 1 Column1 2014 2015 0.033600 2 Column2 2013 2014 0.004406 3 Column2 2014 2015 0.016900 ...
3 Réponses :
Si je comprends bien, vous obtenez les valeurs souhaitées, mais pas les étiquettes souhaitées. Si tel est le cas, vous pouvez modifier les noms de colonne avec df_desired.columns = ['Value_from_2013_2014', 'Value_from_2014_2015']
df_agg = pd.pivot_table(df, 'VALUE', 'COLUMN_NAME', ['YEAR1', 'YEAR2']) df_agg.columns = ['Value_from_' + str(df_agg.columns[i][0]) + '_' + str(df_agg.columns[i][1]) for i in range(len(df_agg.columns))]
Veuillez utiliser le lien modifier sur votre question pour ajouter des informations supplémentaires. Le bouton Post Answer ne doit être utilisé que pour les réponses complètes à la question. - De l'avis
@RohanSingh: Bien que cela bénéficierait certainement d'une explication supplémentaire, il convient de noter que les réponses n'ont pas besoin d'être complètes - du moins en supposant qu'il n'y a pas encore de réponse acceptée ( source ).
Vous pouvez aplatir les colonnes multiindex en utilisant to_flat_index
, puis map
sur str
et ajouter votre préfixe:
s.columns = ["Value_from_"+"_".join(map(str, i)) for i in s.columns.to_flat_index()] print (s) Value_from_2013_2014 Value_from_2014_2015 COLUMN_NAME Column1 0.042835 0.0336 Column2 0.004406 0.0169
Est-ce que cela répond à votre question? Pandas - Comment aplatir un index hiérarchique en colonnes