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文件,所以行数保持一致?
我用python3
和pandas-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