pandas - 为什么我无法使用" skiprows"熊猫的参数

时间:2018-01-06 08:05:32

标签: python pandas

所以,看看下面的代码:

import numpy as np
import pandas as pd

def answer_one():

    energy = pd.read_excel(io = "Energy Indicators.xls", header = 9, parse_cols = "C:F", skip_footer = 38)
    return energy

answer_one()

它产生以下输出:

enter image description here

现在,当我对代码进行一些修改时,如下所示,它会完全改变输出:

def answer_one():

    energy = pd.read_excel(io = "Energy Indicators.xls", header = 9, parse_cols = "C:F", skip_footer = 38, skiprows = 8)
    return energy

answer_one()

我得到的输出如下:

enter image description here

取决于我提供给" skiprows"参数,输出自行改变。我无法理解为什么要改变" skiprows"当我们保持" headers"参数的参数不变时,会影响数据帧的标题?请找到数据文件(.xlsx文件)here

请帮忙吗?我使用Pandas v0.19.2。另外,请不要将我的问题标记为"重复"。我失分了。我很好地找到了一个现有的问题,但不能。

2 个答案:

答案 0 :(得分:3)

当您跳过前8行时,跳过包含标题信息的行,第9行成为标题。不要跳过前8行,而是尝试

skiprows=range(1, 9)

在文档中,skiprows允许跳过哪些行的可迭代。有关csv文件的related question和StackOverflow上的read_csv()方法。

答案 1 :(得分:1)

我认为您需要按list中定义的位置跳过所有行,行10不在列表中,因为Andorra的数据。默认情况下会排除在1-8header)中定义的排名之前的数据(行9)。

同样parse_colsusecols取代,因为警告:

  

FutureWarning:' parse_cols'不推荐使用关键字,使用' usecols'代替     parse_cols =" C:F"

df=pd.read_excel('Energy Indicators.xls',
                  sheet_name='Energy',
                  skiprows=[10,12,13,14,15,16,17],
                  skipfooter=38,
                  header=9,
                  usecols=[2,3,4,5]  #parse_cols = "C:F"
                 )
print (df.head())

          Country Energy Supply Energy Supply per capita  \
0         Andorra             9                      121   
1     Afghanistan           321                       10   
2         Albania           102                       35   
3         Algeria          1959                       51   
4  American Samoa           ...                      ...   

   Renewable Electricity Production  
0                         88.695650  
1                         78.669280  
2                        100.000000  
3                          0.551010  
4                          0.641026