所以,看看下面的代码:
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()
它产生以下输出:
现在,当我对代码进行一些修改时,如下所示,它会完全改变输出:
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()
我得到的输出如下:
取决于我提供给" skiprows"参数,输出自行改变。我无法理解为什么要改变" skiprows"当我们保持" headers"参数的参数不变时,会影响数据帧的标题?请找到数据文件(.xlsx文件)here
请帮忙吗?我使用Pandas v0.19.2。另外,请不要将我的问题标记为"重复"。我失分了。我很好地找到了一个现有的问题,但不能。
答案 0 :(得分:3)
当您跳过前8行时,跳过包含标题信息的行,第9行成为标题。不要跳过前8行,而是尝试
skiprows=range(1, 9)
在文档中,skiprows允许跳过哪些行的可迭代。有关csv文件的related question和StackOverflow上的read_csv()
方法。
答案 1 :(得分:1)
我认为您需要按list
中定义的位置跳过所有行,行10
不在列表中,因为Andorra
的数据。默认情况下会排除在1-8
(header
)中定义的排名之前的数据(行9
)。
同样parse_cols
被usecols
取代,因为警告:
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