【问题标题】:dataframe slicing and pivoting then into multiple dataframes数据帧切片并旋转成多个数据帧
【发布时间】:2016-12-05 23:57:15
【问题描述】:

最终我想在下面的股票数据上运行参数变量

我有表格中的数据:

     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 个单独的数据框:

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 计算中的一个参数)

【问题讨论】:

    标签: python pandas dataframe pivot slice


    【解决方案1】:

    要获取第一个表,您可以旋转原始数据框,将前三列的长格式转换为宽格式:

    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应该就OK了:

    df.iloc[:,[1,3]].drop_duplicates()
    
    #      Symbol     Weight
    #0          A   0.000002
    #5         AA   0.000287
    #10      AAAP   0.000003
    

    【讨论】:

    • 效果很好,但是如何从数据显示中删除 0,5,10
    • 这些是数据框的索引。不确定你需要什么,试试df.iloc[:,[1,3]].drop_duplicates().reset_index(drop=True)df.iloc[:,[1,3]].drop_duplicates().set_index('Symbol') 看看它们是否是你要找的。​​span>
    猜你喜欢
    • 2018-02-12
    • 2012-02-01
    • 2017-02-25
    • 2022-11-03
    • 2020-12-18
    • 2021-04-02
    • 2013-07-24
    • 2019-10-29
    • 1970-01-01
    相关资源
    最近更新 更多