扩展熊猫数据框

时间:2020-06-16 08:24:18

标签: python pandas dataframe

我手头有一个庞大的股票数据集(在60年中约有1万个独特的股票)。可用库存数据的数量随时间而变化。现在,鉴于我知道所有独特的股票,我想对数据框进行某种形式的放大,如下所示:

given = pd.DataFrame({"Date":[1, 1, 2, 2, 2], 
                   "Stock":['Stock 2', 'Stock 1', 'Stock 1', 'Stock 2', 'Stock 3'], 
                   "Return":[0.05, 0.02, 0.01, -0.02, 0]}) 


target = pd.DataFrame({"Date":[1, 1, 1, 2, 2, 2], 
                   "Stock":['Stock 2', 'Stock 1', 'Stock 3','Stock 1', 'Stock 2', 'Stock 3'], 
                   "Return":[0.05, 0.02, np.nan, 0.01, -0.02, 0]}) 

   Date    Stock  Return
0     1  Stock 2    0.05
1     1  Stock 1    0.02
2     2  Stock 1    0.01
3     2  Stock 2   -0.02
4     2  Stock 3    0.00

   Date    Stock  Return
0     1  Stock 2    0.05
1     1  Stock 1    0.02
2     1  Stock 3     NaN
3     2  Stock 1    0.01
4     2  Stock 2   -0.02
5     2  Stock 3    0.00

即即使在某个时间点不存在某些库存,我也想创建某种形式的占位符。我怎样才能有效地做到这一点?谢谢。

1 个答案:

答案 0 :(得分:1)

使用unstackmelt的替代解决方案:

target = given.set_index(['Date', 'Stock']).unstack().droplevel(0, 1)
target = target.reset_index().melt('Date', var_name='Stock', value_name='Return').sort_values(by='Date')

# target
   Date    Stock  Return
0     1  Stock 1    0.02
1     1  Stock 2    0.05
2     1  Stock 3     NaN
3     2  Stock 1    0.01
4     2  Stock 2   -0.02
5     2  Stock 3    0.00