Sie value_counts
mit sort_index
verwenden können, erzeugen dann DataFrame
von to_frame
und letzte transponieren von T
:
print (df.Power.value_counts().sort_index(ascending=False).to_frame().T)
100 75 50 25
Power 1 1 2 2
EDIT von Kommentar:
Sie benötigen crosstab
:
print (pd.crosstab(df.Department, df.Power).sort_index(axis=1, ascending=False))
Power 100 75 50 25
Department
ABC 0 1 0 1
DEF 1 0 2 1
Faster eine andere Lösung mit groupby
und unstack
:
print (df.groupby(['Department','Power'])
.size()
.unstack(fill_value=0)
.sort_index(axis=1, ascending=False))
Power 100 75 50 25
Department
ABC 0 1 0 1
DEF 1 0 2 1
Wenn Bedarf groupby
durch Spalten Department
und Person
, Spalte Person
-groupby
zweite Position hinzufügen (danke piRSquared):
print (df.groupby(['Department','Person', 'Power'])
.size()
.unstack(fill_value=0)
.sort_index(axis=1, ascending=False))
Power 100 75 50 25
Department Person
ABC 1234 0 1 0 0
1235 0 0 0 1
DEF 1236 0 0 1 0
1237 1 0 0 0
1238 0 0 0 1
1239 0 0 1 0
EDIT1 von Kommentar:
Wenn weitere fehlende Werte hinzugefügt werden müssen, verwenden Sie reindex
:
print (df.groupby(['Department','Power'])
.size()
.unstack(fill_value=0)
.reindex(columns=[100,75,50,25,0], fill_value=0))
Power 100 75 50 25 0
Department
ABC 0 1 0 1 0
DEF 1 0 2 1 0
Diese Frage viele Male vor, Sie könnten suchten nur – Jason