为什么在响应skip_cols参数或方法pd.set_index()时无法读取数据框?

时间:2019-06-28 16:03:33

标签: python excel python-3.x pandas dataframe

我有一个读取的数据框

 energy = pd.read_excel('Energy Indicators.xls', skiprows = 16, 
 skip_footer = 38, skip_cols = 2)
 energy.set_index('Unnamed: 2')

它返回以下数据帧(第一行不是理想的,但我可以稍后解决)

    Unnamed: 0   Unnamed: 1   Unnamed: 2   Energy Supply    Energy Supply per Capita
 0  NaN          NaN          NaN          Petajoules       Gigajoules
 1  NaN          Afghanistan  Afghanistan  321              10
 2  NaN          Albania      Albania      102              35
 3  NaN          Algeria      Algeria      1959             51
 4  NaN          Andorra      Andorra      9                121
 5  Nan          Angola       Angola       642              27

我期望如下所示的数据帧,其中省略[[Unnamed:0']和['Unnamed:1'],并将['Unnamed:2']设置为索引,如下所示:

    Unnamed: 2   Energy Supply    Energy Supply per Capita
 0  NaN          Petajoules       Gigajoules
 1  Afghanistan  321              10
 2  Albania      102              35
 3  Algeria      1959             51
 4  Andorra      9                121
 5  Angola       642              27

但是这些东西都没有发生(当我省略相应的参数和set_index时,它保持相同。当我尝试使用skip_cols或set_index()执行代码时,它又一次完全相同。为什么这两段代码不做任何改变给我吗?

2 个答案:

答案 0 :(得分:0)

在代码中,当您在第三行设置索引时,必须将就位标志传递为true

 energy = pd.read_excel('Energy Indicators.xls', skiprows = 16, 
 skip_footer = 38, skip_cols = 2)
 energy.set_index('Unnamed: 2', inplace=True) #Here pass inplace flag

因此该索引设置在原始数据框架上,而不是其副本上。

答案 1 :(得分:0)

skip_cols参数似乎不起作用(使用pd.__version__ '0.23.0')。如果您知道列范围,则可以尝试使用usecols参数。您也可以像这样在pd.read_excel内设置索引列:

energy = pd.read_excel('Energy Indicators.xls', usecols='C:E', index_col=0, skiprows=16, skip_footer=38)

print(energy)

            EnergySupply EnergySupplyperCapita
NaN           Petajoules            Gigajoules
Afghanistan          321                    10
Albania              102                    35
Algeria             1959                    51
Andorra                9                   121
Angola               642                    27