创建或使用其他数据框

问题描述:

我现在有一个熊猫数据帧寻找这样的修改数据框:创建或使用其他数据框

DATESTAMP price    name pct_chg 
0 2006-01-02 62.987301   a  0.000000 
1 2006-01-03 61.990700   a  -0.015822 
2 2006-01-04 62.987301   a  0.016077 
3 2006-01-05 62.987301   a  0.000000 
4 2006-01-06 61.990700   a  -0.015822 
6 2006-01-04 100.1    b  0.000000 
7 2006-01-05 100.5    b  -0.015822 
8 2006-01-06 100.7    b  0.016077 
9 2006-01-07 100.8    b  0.016090 

的问题是,不同项目(具有唯一的列name指定)有始发的不同时间,以及活着对于

  • 上述项目a开始在2016-01-02不同的时间量,并在2016-01-06
  • 以上项目结束起始于2006-01-04并结束于2006-01-07

我想总结列pct_chg在一个新的数据帧,其DATESTAMP为索引和列的name。我还希望新的DataFrame以这样一种方式来创建索引,即以“最早的”现有日期记录(在本例中为2006-01-02)开始,结束于“最新”(本例中为2006-01-07)。

结果会是什么样子

  a   b 
2006-01-02 0.000000 NaN 
2006-01-03 -0.015822 NaN 
2006-01-04 0.016077 0.000000 
2006-01-05 0.000000 -0.015822 
2006-01-06 -0.015822 0.016077 
2006-01-07 NaN  0.016090 

您可以使用set_indexunstack

print (df.set_index(['DATESTAMP','name'])['pct_chg'].unstack()) 
name    a   b 
DATESTAMP      
2006-01-02 0.000000  NaN 
2006-01-03 -0.015822  NaN 
2006-01-04 0.016077 0.000000 
2006-01-05 0.000000 -0.015822 
2006-01-06 -0.015822 0.016077 
2006-01-07  NaN 0.016090 

pivot另一种解决方案:

print (df.pivot(index='DATESTAMP', columns='name', values='pct_chg')) 
name    a   b 
DATESTAMP      
2006-01-02 0.000000  NaN 
2006-01-03 -0.015822  NaN 
2006-01-04 0.016077 0.000000 
2006-01-05 0.000000 -0.015822 
2006-01-06 -0.015822 0.016077 
2006-01-07  NaN 0.016090