2016-03-23 13 views
1

Ich habe einen Pandas Datenrahmen durch den Namen usabledata mit Spalten [ ‚Marker‘, ‚action‘, ‚id‘]groupby Pandas Datenrahmen und eine andere Datenrahmen schaffen, der die groupby Ergebnisse stellt horizontal

usabledata = pd.DataFrame(columns=['marker','action','id']) 

ich lief folgende Befehle auf dem usabledata Datenrahmen:

counts = usabledata.groupby(['marker','action']).count() 
counts = counts.drop(['marker','action']) 
print counts 

         id 
marker action 
1  A    377 
     B    224 
     C    9881 
     D    149946 
2  A    481 
     B    397 
     C    7468 
     D    147581 
3  A    538 
     B    458 
     D    145916 

Nun mag ich eine Pandas Datenrahmen mit folgendem Format erstellen:

Marker  A  B  C  D 
1   377 224 9881 149946 
2   481 397 7468 147581 
3   538 458 0  145916 

Ist es möglich, dies mit Pandas Dataframe in Ipython Notebook zu tun?

Ist es auch möglich, eine Spalte zum Beispiel die Spalte "C" zu löschen, nachdem diese gewünschte Ausgabe erhalten wurde?

Ein weiterer Zweifel an dem gleichen Problem, nach Erhalt der gewünschten Ausgabe, wie kann ich eine weitere Spalte 'Fraction' hinzufügen, die nur ein Verhältnis der Spalten 'A' und 'D' ist?

+0

@EdChum kann Ihnen dabei helfen? –

Antwort

4

IIUC dann können Sie unstack mit fillna nennen:

In [124]: 
gp.unstack().fillna(0) 

Out[124]: 
     action     
marker  A B  C  D 
id        
1   377 224 9881 149946 
2   481 397 7468 147581 
3   538 458  0 145916 
+0

Dank @EdChum können Sie bitte überprüfen Sie die Bearbeitung und lassen Sie mich wissen, ob das auch möglich ist? –

+1

Sie können entweder 'drop (columns = ['C'])' 'oder einfach ausfiltern' gp.unstack(). Fillna (0) .ix [:, ['A', 'B', 'D' ] ' – EdChum

+0

Ich habe dies getan, um das Löschen zu machen. unstacked = gp.unstack(). fillna (0) unstacked.drop (entstapelt [['C']]) –