web-dev-qa-db-fra.com

Pandas pivot_table, trie les valeurs par colonnes

Je suis un nouvel utilisateur de Pandas et j'adore ça!

J'essaie de créer un tableau croisé dynamique dans Pandas. Une fois que j'ai le tableau croisé dynamique comme je le souhaite, je voudrais classer les valeurs par les colonnes.

J'ai joint une image d'Excel car il est plus facile de voir sous forme de tableau ce que j'essaie de réaliser. Lien vers l'image

J'ai cherché dans stackoverflow mais j'ai du mal à trouver une réponse. J'ai essayé d'utiliser .sort () mais cela ne fonctionne pas. Toute aide serait appréciée.

Merci d'avance

11
Kah

Cela devrait faire ce que vous recherchez:

In [1]: df = pd.DataFrame.from_dict([{'Country': 'A', 'Year':2012, 'Value': 20, 'Volume': 1}, {'Country': 'B', 'Year':2012, 'Value': 100, 'Volume': 2}, {'Country': 'C', 'Year':2013, 'Value': 40, 'Volume': 4}])

In [2]: df_pivot = pd.pivot_table(df, index=['Country'], columns = ['Year'],values=['Value'], fill_value=0)

In [3]: df_pivot
Out [4]:
    Value     
Year     2012 2013
Country           
A          20    0
B         100    0
C           0   40

In [5]: df = df.reindex(df_pivot['Value'].sort_values(by=2012, ascending=False).index)

Out [6]: 
    Value     
Year     2012 2013
Country           
B         100    0
A          20    0
C           0   40

Fondamentalement, il obtient l'index des valeurs triées et réindexe le tableau croisé dynamique initial.

14
Algold