2016-10-27 21 views
2

我用Pandas处理不同的Excel文件。我需要从每个文件的顶部删除一定数量的行。这些额外的行可能是空的,或者可能包含文本。熊猫正在合并一些行,所以我不确定需要删除多少行。例如:熊猫将Excel文件中的空行结合到数据框中的单行

下面是一个例子Excel文件(表示为CSV)文件:

,, 
,, 
some text,, 
,, 
,, 
,, 
name, date, task 
Jason,1-Jan,swim 
Aem,2-Jan,workout 

这是我目前的Python脚本:

import pandas as pd 
xl = pd.ExcelFile('extra_rows.xlsx') 
dfs = xl.parse(xl.sheet_names[0]) 
print ("dfs: ", dfs) 

下面是结果,当我打印数据框:

dfs:   Unnamed: 0   Unnamed: 1 Unnamed: 2 
0 some other text     NaN  NaN 
1    NaN     NaN  NaN 
2    NaN     NaN  NaN 
3    NaN     NaN  NaN 
4    name     date  task 
5   Jason 2016-01-01 00:00:00  swim 
6    Aem 2016-01-02 00:00:00 workout 

从文件中,我将删除前6行。但是,从数据框中,我只能删除4.有没有办法在数据处于其原始状态的情况下读取Excel文件,以便行数保持一致?

回答

2

我用python3pandas-0.18.1。 Excel加载函数是pandas.read_csv。您可以尝试设置参数header=None来实现。下面是样本代码:

(1)使用默认参数,结果将忽略空行:

In [12]: pd.read_excel('test.xlsx') 
Out[12]: 
    Unnamed: 0 Unnamed: 1 Unnamed: 2 
0  text1  NaN  NaN 
1  NaN  NaN  NaN 
2   n1   t2   c3 
3  NaN  NaN  NaN 
4  NaN  NaN  NaN 
5  jim  sum  tim 

(2)同header=None,结果将保持空行。

In [13]: pd.read_excel('test.xlsx', header=None) 
Out[13]: 
     0 1 2 
0 NaN NaN NaN 
1 NaN NaN NaN 
2 text1 NaN NaN 
3 NaN NaN NaN 
4  n1 t2 c3 
5 NaN NaN NaN 
6 NaN NaN NaN 
7 jim sum tim 
2

这里是你在找什么:

import pandas as pd 
xl = pd.ExcelFile('extra_rows.xlsx') 
dfs = xl.parse(skiprows=6) 
print ("dfs: ", dfs) 

检查the docs on ExcelFile了解更多详情。

2

如果您在阅读pd.read_excel您的文件,并通过header=None,空白行应包括:

In [286]: df = pd.read_excel("test.xlsx", header=None) 

In [287]: df 
Out[287]: 
      0  1  2 
0  NaN NaN NaN 
1  NaN NaN NaN 
2 something NaN NaN 
3  NaN NaN NaN 
4  name date other 
5   1  2  3 
相关问题