[英]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.