2016-08-01 54 views
1

Letztlich ein parametrisches var auf Bestandsdaten laufen Ich möchte unterDatenrahmen Schneiden und Schwenken dann in mehrere dataframs

Ich habe Daten in der Form: 2 separate Datenrahmen erstellen möchten

 Date  Symbol  ClosingPrice Weight 
0 7/22/2016  A   46.58   0.000002 
1 7/25/2016  A   46.14   0.000002 
2 7/26/2016  A   46.95   0.000002 
3 7/27/2016  A   47.26   0.000002 
4 7/28/2016  A   47.51   0.000002 
5 7/22/2016  AA   10.57   0.000287 
6 7/25/2016  AA   10.49   0.000287 
7 7/26/2016  AA   10.67   0.000287 
8 7/27/2016  AA   10.74   0.000287 
9 7/28/2016  AA   10.68   0.000287 
10 7/22/2016 AAAP   30.51   0.000003 
11 7/25/2016 AAAP   31.02   0.000003 
12 7/26/2016 AAAP   30.85   0.000003 
13 7/27/2016 AAAP   30.97   0.000003 
14 7/28/2016 AAAP   31.00   0.000003 

ich als wie z:

date   A  AA  AAAP 
7/22/2016 46.58 10.57 30.51 
7/25/2016 46.14 10.49 31.02 
7/26/2016 46.95 10.67 30.85 
7/27/2016 47.26 10.74 30.97 
7/28/2016 47.51 10.68 31 

mit Symbolen wie die Spaltenüberschriften

und

Symbol Weight 
A   0.00000166 
AA  0.00028664 
AAAP  0.00000326 

Der erste Datenrahmen wird auf eine Varianz/Kovarianz-Matrix und der zweite Datenrahmen stellt die Gewichte der einzelnen Sicherheits im Aktienportfolio (ein Parameter in dem Parameter VAR-Berechnung)

Antwort

3

berechnet werden holen Sie sich die erste Tabelle, können Sie Ihren ursprünglichen Datenrahmen schwenken sie auf breit~~POS=TRUNC auf den ersten drei Spalten von langen zu transformieren:

import pandas as pd 
df.iloc[:,0:3].pivot('Date', 'Symbol', 'ClosingPrice') 

# Symbol  A  AA AAAP 
#  Date   
#7/22/2016 46.58 10.57 30.51 
#7/25/2016 46.14 10.49 31.02 
#7/26/2016 46.95 10.67 30.85 
#7/27/2016 47.26 10.74 30.97 
#7/28/2016 47.51 10.68 31.00 

die zweite Tabelle sind die einzigartigen Werte des zweiten und vierten Spalts, so wählen Sie diese aus und drop_duplicates sollte in Ordnung sein:

df.iloc[:,[1,3]].drop_duplicates() 

#  Symbol  Weight 
#0   A 0.000002 
#5   AA 0.000287 
#10  AAAP 0.000003 
+0

funktionierten großartig, aber wie kann ich die 0,5,10 aus der Datenanzeige – John

+0

Das ist Index des Datenrahmens entfernen. Nicht sicher, was Sie brauchen, versuchen Sie 'df.iloc [:, [1,3]]. Drop_duplicates(). Reset_index (drop = True)' oder 'df.iloc [:, [1,3]]. Drop_duplicates () .set_index ('Symbol') 'und sehen, ob sie das sind, was Sie suchen. – Psidom

+0

perfekt, nochmals vielen Dank! – John