2016-10-27 42 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 
相關問題