2016-08-01 3 views
1

В конце концов я хочу запустить параметрический вар на данных о запасах нижеdataframe нарезка и поворачиваясь затем на несколько dataframs

У меня есть данные в виде:

 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 

Я хотел бы создать 2 отдельных dataframes как например:

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 

с символами, как заголовки столбцов

и

Symbol Weight 
A   0.00000166 
AA  0.00028664 
AAAP  0.00000326 

Первый dataframe будет использоваться для вычисления дисперсии/матрицы ковариации, а второй dataframe представляет вес каждой ценной бумаги в портфеле акций (параметр в расчете параметрической VAR)

ответ

3

К получить первую таблицу, вы можете поворачивать исходный кадр данных, чтобы превратить его из долго широкого формата на первых трех столбцах:

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 

Вторая таблица уникальные значения второго и четвертого столбцов, поэтому выбирать их и drop_duplicates должно быть в порядке:

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

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

работал большой, но как я могу удалить 0,5,10 с дисплея – John

+0

данных Это индекс кадра данных. Не уверен, что вам нужно, попробуйте 'df.iloc [:, [1,3]]. Drop_duplicates(). Reset_index (drop = True)' или 'df.iloc [:, [1,3]]. Drop_duplicates () .set_index ('Symbol') 'и посмотреть, являются ли они тем, что вы ищете. – Psidom

+0

отлично, спасибо снова! – John

Смежные вопросы