我的数据框如下所示:
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(并重置索引)重新整形,因为日期值不是唯一的。我能想到实现这一目标的唯一方法是通过强力迭代。
有更简单的方法吗?
提前致谢。
答案 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}相关联的多个值的函数成对一个值。