簡體   English   中英

如何在Pandas中重命名未命名的列?

[英]How to rename unnamed columns in Pandas?

我有一個帶有表格的pdf文件,並試圖將該表格放入Pandas中。 眾所周知,提取pdf表非常困難,但是我發現表格效果最好。 這是我所見過的最好的東西,盡管仍然不夠完美。 我有這張pdf表格:

表

請注意表的標題以及它們有時如何運行到下一行,並且通常不太好。 我正在介紹一個真正的問題,因為我能看到的所有解決方案都需要一種更好的方法來首先創建數據框。 這個數據框是我能得到的最好的數據框,但是如果您知道如何從表格中獲得更好的數據框,請告訴我。

我使用tabula-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 

如果您看的話,您會看到標題已被拆分為前三行。 我該如何解決? 是否有任何巧妙,優雅的解決方案為每個列取三個名稱中的“最佳”,並確定該列的名稱?

謝謝!!

這是一個純粹的熊貓解決方案-假設數據幀的讀取方式完全與下面的粘貼方式相同。

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  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM