2016-12-27 3 views
3

Ist es möglich, diese Daten so zu transformieren/kombinieren, dass die mit tf beginnenden Spalten als Index angezeigt werden und nur die Spalten übrigbleiben, die mit vol als den verbleibenden Spalten beginnen?Pandas Zeitreihendaten mit angegebenen Spalten transformieren und summieren

Beispiel Ausgangsdaten:

    v1 v2 v3 tf1 tf2 tf3 
Timestamp      
2011-09-01 02:36:00 1 1 0 1 1 0 
2011-09-01 03:00:00 1 0 0 1 1 0 
2011-09-01 03:36:00 1 0 0 1 1 0 
2011-09-01 04:00:00 1 0 0 1 0 0 
2011-09-01 04:33:00 1 0 0 1 0 0 
2011-09-01 04:39:00 1 0 0 1 0 0 
2011-09-01 05:12:00 1 0 0 1 0 0 
2011-09-01 05:30:00 1 0 0 1 0 0 
2011-09-01 05:36:00 1 0 0 1 1 1 
2011-09-01 05:42:00 1 0 0 1 0 0 

gewünschte Ausgabe:

gewünschter Ausgang zeigt Summe der Werte, wenn v1, v2 oder v3 der Index und tf1, tf2 und tf3 sind die dataframe Säulen.

tf1 tf2 tf3 
v1 10 4 1 
v2 1 1 0 
v3 0 0 0 

Wie aus den obigen Beispielen ersichtlich, gab es 10-mal, dass v1 und tf1 Wert waren 1, 4-mal, dass v1 und tf2 waren Wert 1 usw.

ich erfolglos versucht haben versucht, dies zu tun mit groupby und versucht, Index und Spalten zu transponieren, dh subset[vlist].T gibt mir die v1, v2 und v3 als Index, aber dann habe ich die Zeitstempel Daten als die Spalten, die nicht was ich will.

Kann dies von einer Gruppe mit Summe oder ähnlichem gemacht werden?

Danke für jede Hilfe.

Antwort

4

Das Ergebnis ist das innere Produkt von Säulenpaaren. Um alle Paare zu erhalten, können Sie eine Matrixprodukt von v-Spalten und tf-Spalten tun:

df.filter(like="v").T.dot(df.filter(like="tf")) 

# tf1 tf2 tf3 
#v1 10 4 1 
#v2 1 1 0 
#v3 0 0 0 

  • .dot aus der Dokumentation ist die Matrix-Multiplikation mit Datenrahmen oder Reihenobjekte
  • Da die V-Säulen transponiert sind, gibt das dot Produkt (v1 * tf1).sum(), (v1 * tf2).sum(), ... (v3 * tf3).sum() gemäß der Definition der Matrixmultiplikation.
+2

OMG! stahl meine Antwort! :-) – piRSquared

+0

Das ist perfekt danke! Und danke @piRSquared – ade1e

+0

Können Sie bitte erklären, was das '.dot' Element zu den Daten macht? Multipliziert es die Spalten und Indexdaten? Danke – ade1e

Verwandte Themen