2016-09-29 148 views
2

我現在有一個熊貓數據幀尋找這樣的修改數據框:創建或使用其他數據框

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 

回答

2

您可以使用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 
相關問題