2016-05-30 4 views
0

私はDataFrameという名前の 'stockData'を持っています。以下は、すべての異なるタイプの列名を含む非常に小さな例の頭です。 (例えばBBG.XLON.BTA.S)会社名 部2 - - (例えばRAWCLOSEための)列のデータの記述列名の一部の別個のリストを作成する

  BBG.XLON.BTA.S_RAWLAST BBG.XLON.BTA.S_RAWVOLUME \ 
date               
2008-02-04     262.00     23397414 
2008-02-05     257.25     35213970 
2008-02-06     262.75     41323308 
2008-02-07     237.00     123276113 
2008-02-08     231.00     76456078 

      BBG.XLON.BTA.S_MKTCAP BBG.XLON.BTA.S_RAWVWAP \ 
date               
2008-02-04    20875.7353    263.4303 
2008-02-05    20497.5582    261.6408 
2008-02-06    20935.7956    262.3705 
2008-02-07    18884.0477    241.9444 
2008-02-08    18389.9269    234.4538 

      BBG.XLON.BTA.S_RAWCLOSE BBG.XLON.BTA.S_LAST_ADJ \ 
date               
2008-02-04     262.00     262.00 
2008-02-05     257.25     257.25 
2008-02-06     262.75     262.75 
2008-02-07     237.00     237.00 
2008-02-08     231.00     231.00 

      BBG.XLON.BTA.S_VWAP_ADJ BBG.XLON.BTA.S_VOLUME_ADJ \ 
date                
2008-02-04     263.4303     23397414 
2008-02-05     261.6408     35213970 
2008-02-06     262.3705     41323308 
2008-02-07     241.9444     123276113 
2008-02-08     234.4538     76456078 

      BBG.XLON.BTA.S_CLOSE_ADJ BBG.XLON.VOD.S_RAWLAST \ 
date               
2008-02-04     262.00     177.9 
2008-02-05     257.25     173.6 
2008-02-06     262.75     174.2 
2008-02-07     237.00     170.0 
2008-02-08     231.00     174.3 

       BBG.XLON.VOD.S_VOLUME_ADJ \ 
date     ...           
2008-02-04    ...        114868730 
2008-02-05    ...        165372960 
2008-02-06    ...        154129543 
2008-02-07    ...        187932809 
2008-02-08    ...        160997280 

      BBG.XLON.VOD.S_CLOSE_ADJ BBG.XLON.VOD.S_EXCHANGE_HOLIDAY \ 
date                  
2008-02-04      177.9        NaN 
2008-02-05      173.6        NaN 
2008-02-06      174.2        NaN 
2008-02-07      170.0        NaN 
2008-02-08      174.3        NaN 

      BBG.XLON.VOD.S_CORP_ACTION BBG.XLON.VOD.S_REPORTING \ 
date                
2008-02-04       NaN      NaN 
2008-02-05       NaN      NaN 
2008-02-06       NaN      NaN 
2008-02-07       NaN      NaN 
2008-02-08       NaN      NaN 

      BBG.XLON.VOD.S_FX BBG.XLON.VOD.S_LAST_ADJ_EUR \ 
date               
2008-02-04    1.3307     236.73153 
2008-02-05    1.3411     232.81496 
2008-02-06    1.3406     233.53252 
2008-02-07    1.3410     227.97000 
2008-02-08    1.3415     233.82345 

      BBG.XLON.VOD.S_MKTCAP_EUR BBG.XLON.VOD.S_VWAP_ADJ_EUR \ 
date                 
2008-02-04    125761.886753     237.215373 
2008-02-05    123681.237732     235.310211 
2008-02-06    124062.436220     233.089586 
2008-02-07    121107.388396     229.125137 
2008-02-08    124216.990692     233.210250 

      BBG.XLON.VOD.S_CLOSE_ADJ_EUR 
date          
2008-02-04      236.73153 
2008-02-05      232.81496 
2008-02-06      233.53252 
2008-02-07      227.97000 
2008-02-08      233.82345 

列ヘッダーは2つのセクション 部1から構成されています

すべてのカラム名(すべてのカラム名)の明確なリストを取得したいと思います。データフレームからわかるように、各企業には1列以上のデータがあり、数百の企業が潜在的に存在します。

id 
BBG.XLON.BTA.S 
BBG.XLON.VOD.S 

しかし、私は、私はこれを行うだろうか見当がつかない:私はのように見えるデータフレームを返さたいだけ2銘柄があり、この例ではそう

。列名を分割し、それぞれの要素の1つの要素の別個のリストをどのように書くかについては、操作を実行する方法についてのヘルプが必要な場合があります。どんな助けでも大歓迎です。

答えて

0

あなたは、df.columnsを使用してcolumn名前の上にlist理解を行う.split('_')を使用し、重複を削除し、pd.Seriesに変換しnp.unique()を使用し、その後、株式の名前を取得するために最初の部分のみを保つことができます。

import numpy as np 
import pandas as pd 
pd.Series(np.unique([col.split('_')[0] for col in df.columns]), name='id') 

参照してください。 docsnp.unique)。

関連する問題