web-dev-qa-db-fra.com

Comment faire pivoter une trame de données dans Pandas?

J'ai une table au format csv qui ressemble à ceci. Je voudrais transposer le tableau pour que les valeurs de la colonne du nom de l'indicateur soient les nouvelles colonnes,

Indicator       Country         Year   Value    
1               Angola          2005    6
2               Angola          2005    13
3               Angola          2005    10
4               Angola          2005    11
5               Angola          2005    5
1               Angola          2006    3
2               Angola          2006    2
3               Angola          2006    7
4               Angola          2006    3
5               Angola          2006    6

Je voudrais que le résultat final aime ceci:

Country    Year     1     2     3     4     5
Angola     2005     6     13    10    11    5
Angola     2006     3     2     7     3     6

J'ai essayé d'utiliser un cadre de données pandas avec peu de succès.

print(df.pivot(columns = 'Country', 'Year', 'Indicator', values = 'Value'))

Avez-vous des réflexions sur la façon d'accomplir cela?

Merci

19
bjurstrs

Vous pouvez utiliser pivot_table:

pd.pivot_table(df, values = 'Value', index=['Country','Year'], columns = 'Indicator').reset_index()

cela produit:

 Indicator  Country     Year    1   2   3   4   5
 0          Angola      2005    6   13  10  11  5
 1          Angola      2006    3   2   7   3   6
30
JAB

C'est une supposition: ce n'est pas un fichier ".csv", mais un Pandas DataFrame importé d'un '.csv'.

Pour faire pivoter ce tableau, vous voulez trois arguments dans votre Pandas "pivot". Par exemple, si df est votre trame de données:

table = df.pivot(index='Country',columns='Year',values='Value')  
print (table)

Cela devrait devrait donner la sortie souhaitée.

2
Jason Sprong