【问题标题】:Reshaping Long Data to Wide in Python (Pandas) [duplicate]在 Python(Pandas)中将长数据重塑为宽数据
【发布时间】:2018-03-25 19:15:04
【问题描述】:

我正在尝试将我的长数据重塑为宽格式。目前数据如下:

OBS . date . TICKER . RET

1 . 20050131 . AAPL . 0.02
2 . 20050231 . AAPL . 0.01
3 . 20050131 . GOOG . 0.05
4 . 20050231 . GOOG . 0.03

我想获得如下数据:

TICKER . 20050131 . 20050231

AAPL   .   0.02   .   0.01
GOOG   .   0.05   .   0.03

数据存储在 pandas 数据框中。我尝试堆叠数据,但我认为我做得不对。

感谢您的帮助!

【问题讨论】:

    标签: python pandas dataframe reshape


    【解决方案1】:

    你可以pivot你的数据框:

    df.pivot(index='TICKER', columns='date', values='RET')
    
    date    20050131  20050231
    TICKER                    
    AAPL        0.02      0.01
    GOOG        0.05      0.03
    

    【讨论】:

    • 我尝试这样做,但出现以下错误:“ValueError: Index contains duplicate entries, cannot reshape”
    • 你需要考虑在这种情况下你想要实现什么:如果你在一个日期有多个例如 AAPL,你会有什么价值想要那里? df.pivot 无法为您选择。
    • 哦,那么错误是由于有多个相同日期的条目引起的?我想我必须先清理数据。感谢您的帮助!