2016-10-27 1 views
2

私はPandasで処理している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 
関連する問題