pandas将Excel文件中的空行合并到数据框中的单行

我有不同的Excel文件,我正在处理大pandas。 我需要从每个文件的顶部删除一定数量的行。 这些额外的行可以是空的,也可以包含文本。 pandas组合了一些行,所以我不知道有多less需要删除。 例如:

这里是一个示例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文件,所以行数保持一致?

我用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 

这里是你在找什么:

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

查看ExcelFile上的文档以获取更多详细信息。

如果使用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