2017-04-05 36 views
0

私はそこにテーブルがあるpdfを持っていて、そのテーブルをPandasに取得しようとしています。 pdfテーブルを抽出することは悪名高くも困難なことですが、タブラが最もうまく機能することが分かりました。まだまだ完璧ではありませんが、私が見たことは遠く離れています。私は、このPDFのテーブルがあります。Pandasの名前のない列の名前を変更する方法は?

Table

注テーブルのヘッダを、そしてどのように彼らは時々、次の行に実行し、一般的に素敵ではありません。私が見ることができるすべてのソリューションは、最初にデータフレームを作成するためのより良いアプローチを求めているので、私は本当の問題に先んじています。このデータフレームは私が得ることができる最高のものですが、あなたがタブラからより良いものを得る方法を知っていれば、私に教えてください。

私はタブラ-PYを使用して、このコードを実行します。

holdingsDF = tbla.read_pdf(fileName, nospreadsheet=True) 

そこに多くのオプションがあり、私はそれらのすべてを認識していないけど、これはいじった後、私ができる最善のようですオプション付き。そして得られたDFはこれです:

  Unnamed: 0     Unnamed: 1  Unnamed: 2 Identifier Unnamed: 4 Curren Unnamed: 6 TAG0 Strategy 
0  Asset Type      Name  Identifier  NaN Quantity NaN  Price   NaN 
1    NaN       NaN    NaN  Type  NaN  cy  NaN   Name 
2   Equity  Akamai Technologies Inc AKAM US Equity  TICKER (5,830) USD  65.000   AKAM 
3 Convertible Bond    AKAM 0 02/15/19 US00971TAG67  ISIN 1,595,000 USD 100.875   AKAM 
4   Equity Advanced Micro Devices Inc AMD US Equity  TICKER (181,500) USD  13.490   AMD 
5 Convertible Bond   AMD 2 1/8 09/01/26 US007903BD80  ISIN 1,650,000 USD 185.500   AMD 

あなたが見れば、あなたはヘッダを見ることができますが、ソートの最初の3行の間で分割されました。これをどうやって解決するのですか?各列の3つの名前のうちの「最高」を取るための巧妙で洗練されたソリューションがありますか?それを列名にしますか?

ありがとうございます!

+0

すべての列名を入力するだけで、プログラム的な解決策を検討するよりも高速になる場合があります。 – Psidom

答えて

1

これは純粋なパンダソリューションです。データフレームが以下に貼り付けられた通りに正確に読み込まれていると仮定します。

df.columns = df.columns.str.replace('Unnamed.*', '') + \ 
      df.iloc[0].fillna('') + \ 
      df.iloc[1].fillna('') 

df.drop([0,1], inplace=True) 


1  Asset Type      Name  Identifier \ 
2   Equity  Akamai Technologies Inc AKAM US Equity 
3 Convertible Bond    AKAM 0 02/15/19 US00971TAG67 
4   Equity Advanced Micro Devices Inc AMD US Equity 
5 Convertible Bond   AMD 2 1/8 09/01/26 US007903BD80 

1 IdentifierType Quantity Currency Price TAG0 StrategyName 
2   TICKER (5,830)  USD 65.000    AKAM 
3   ISIN 1,595,000  USD 100.875    AKAM 
4   TICKER (181,500)  USD 13.490    AMD 
5   ISIN 1,650,000  USD 185.500    None 
+0

これで警告が出ます(Python 3.4、Pandas 0.16.2) 'FutureWarning: '+'を使用してIndexesでの集合体を提供することは廃止されました'私は 'union'を使ってみましたが、エラーが発生します。どんな助け? – lukehawk

+0

0.19にアップグレードするか、すべての末尾に.valuesを入れてみてください。 –

+0

Ahhhh yessss。ダン - 私は背後にいた。ありがとう!!! – lukehawk

関連する問題