Python 如何使用熊猫跳过未知数量的行?

Python 如何使用熊猫跳过未知数量的行?,python,pandas,Python,Pandas,在下面的示例中,我只能看到第一行数据的df.columns。但是,我想为不同的文件使用代码。对于其中一些,前几行是空的。我不知道确切的行数,因此无法使用f.e:skiprows=4。如何找到应跳过的空行数 path = r'D:\columntest.xlsx' xlsx = pd.ExcelFile(path) df = pd.read_excel(xlsx, sheet_name=0) print(df.columns) 您可以使用drop_na方法: df.dropna(how='al

在下面的示例中,我只能看到第一行数据的df.columns。但是,我想为不同的文件使用代码。对于其中一些,前几行是空的。我不知道确切的行数,因此无法使用f.e:skiprows=4。如何找到应跳过的空行数

path = r'D:\columntest.xlsx'
xlsx = pd.ExcelFile(path)
df = pd.read_excel(xlsx, sheet_name=0)

print(df.columns)

您可以使用drop_na方法:

df.dropna(how='all', inplace=True)
df = df.reset_index(drop=True)
df.columns = df.iloc[0]
df = df.drop(0)

此解决方案的思想是将excel工作表加载到数据框中。然后将其存储到csv文件中。最后,我们打开csv文件并删除带有双分号的所有行

import pandas as pd

# load excel file
path_load = 'D:/columntest.xlsx'
xlsx = pd.ExcelFile(path)
df = pd.read_excel(path, sheet_name=0, header=None)

# store sheet as csv file
path_store = path_load[:-5] + '.csv'
df.to_csv(path_store, sep=';', index=False, header=False)

# process csv to remove lines with `;;`
with open(path_store, "r") as f:
    lines = f.readlines()
with open(path_store, "w") as f:
    for line in lines:
        if line.strip("\n") != ';;':
            f.write(line)

df = pd.read_csv(path_store, sep=';')

我需要将“drop_na”改为“dropna”,但它不起作用。当第一行中没有给出列名时,它会打印名称:“未命名:0”、“未命名:1”等等。我在原始答案中添加了一些行。我需要给你一个搜索函数才能得到这个结果。当第2、3、4、5、6……行中给出了列名时,它可以工作,但当它们出现在第1行时,它就不工作了。然后我得到了一个错误——“单位置索引器超出范围”。当我添加:c=df.columns[0]时,它会工作,然后:如果c=='Unnamed:0':您的解决方案。当第一行给出列名时,它只会更进一步。我已经尝试了您的解决方案。当我在结尾使用“print(df.columns)”时,它会打印名称:“Unnamed:0”、“Unnamed:1”等等。它只在第一行给出列名时才起作用。只要不提供示例数据集,就很难猜出哪里出了问题。对我来说,它工作在一个Excel文件中,有不同数量的空行和多张工作表。