在Python 2.7和Pandas中重塑具有非唯一索引的Dataframe

时间:2017-03-04 19:31:41

标签: pandas dataframe

我的数据框如下所示:

             Weight              Ticker
Date                                    
2002-12-31  0.005953              PWER
2002-12-31  0.010682               TUP
2002-12-31  0.012403             AAMRQ
2003-01-31  0.012960               GTW
2003-01-31  0.023259          2987536Q

我想把它变成以下形式:

                   PWER      TUP      AAMRQ     GTW    2987536Q
Date
2002-12-31      0.005953   0.010682  0.012403    Nan     Nan
2003-01-31         Nan        Nan       Nan   0.012960 0.023259

我无法使用pivot(并重置索引)重新整形,因为日期值不是唯一的。我能想到实现这一目标的唯一方法是通过强力迭代。

有更简单的方法吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

如果您重置索引以使Date成为列,那么您可以使用pivot

In [25]: df.reset_index().pivot(index='Date', columns='Ticker', values='Weight')
Out[25]: 
Ticker      2987536Q     AAMRQ      GTW      PWER       TUP
Date                                                       
2002-12-31       NaN  0.012403      NaN  0.005953  0.010682
2003-01-31  0.023259       NaN  0.01296       NaN       NaN

请注意,如果没有重复的(Date, Ticker)对,则可以使用pivot。如果存在重复项((ayhan suggests),则您需要使用pivot_table并指定aggfunc - 一个聚合与重复{{1}相关联的多个值的函数成对一个值。