Python 如何重命名熊猫中未命名的列?
我有一个pdf文件,里面有一张桌子,我想把那张桌子做成熊猫。提取pdf表格是出了名的困难,但我发现tabla工作得最好。这绝对是我见过的最好的,尽管还不完美。我有这个pdf表格: 请注意表的标题,以及它们有时是如何运行到下一行的,通常都不是很好。我在前面提到了真正的问题,因为我所看到的所有解决方案首先都需要一种更好的方法来创建数据帧。这个数据框是我能得到的最好的,但是如果你知道如何从表格中得到一个更好的,请告诉我 我使用tabla py并运行以下代码:Python 如何重命名熊猫中未命名的列?,python,pandas,dataframe,tabula,Python,Pandas,Dataframe,Tabula,我有一个pdf文件,里面有一张桌子,我想把那张桌子做成熊猫。提取pdf表格是出了名的困难,但我发现tabla工作得最好。这绝对是我见过的最好的,尽管还不完美。我有这个pdf表格: 请注意表的标题,以及它们有时是如何运行到下一行的,通常都不是很好。我在前面提到了真正的问题,因为我所看到的所有解决方案首先都需要一种更好的方法来创建数据帧。这个数据框是我能得到的最好的,但是如果你知道如何从表格中得到一个更好的,请告诉我 我使用tabla py并运行以下代码: holdingsDF = tbla.re
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
只需键入所有列名,可能比提出一个编程解决方案还要快。我得到了一个警告(Python 3.4,Pandas 0.16.2)
FutureWarning:使用“+”为集合union提供索引是不推荐的
我尝试使用“union”,但出现了一个错误。有什么帮助吗?升级到0.19或尝试将.values放在所有值的末尾