数据帧切片和旋转然后转换为多个数据字段

时间:2016-08-01 01:10:57

标签: python pandas dataframe pivot slice

最终我想在

以下的股票数据上运行参数化变量

我的表格中有数据:

     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

我想创建两个独立的数据帧:

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

第一个数据帧将用于计算方差/协方差矩阵,第二个数据帧表示股票投资组合中每个证券的权重(参数VAR计算中的参数)

1 个答案:

答案 0 :(得分: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