2016-09-29 5 views
2

を使用してデータフレームを変更します。私は現在、パンダDATAFRAMEはこのように見てい作成するか、または別のデータフレーム

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で終了します。

私はnameのようにインデックスと列などDATESTAMPを持つ、新しいデータフレームの列pct_chgを要約したいと思います。また、新しい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

ようになりますあなたはunstackset_indexを使用することができます。

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 
関連する問題