从熊猫数据框中永久删除行

时间:2019-12-12 21:49:34

标签: python pandas

如何从熊猫数据框中永久删除行? 例如: 我有一个电子表格,其中包含带有标题的列,但在我不希望的前4行和后2行中有一些信息。 所以我用:

            dataSet = pd.read_excel(excelFile)
            dataSet.drop(dataSet.head(4).index,inplace=True)
            dataSet.drop(dataSet.tail(2).index,inplace=True)
            rowCount = dataSet.shape[0]
            for a in range(rowCount):
                newPatientName = dataSet.iloc[a][0]
                print(newPatientName)

通过不包含电子表格顶部和底部的信息,可以按预期工作。 但是,当我稍后在代码中这样做时:

            columnList = []
            for col in dataSet.columns:
                columnList.append(col)
            print(columnList)

它打印:

['Fab Tracking (w Completed) Report', 'Unnamed: 1', 'Unnamed: 2', 'Unnamed: 3', 'Unnamed: 4', 'Unnamed: 5', 'Unnamed: 6', 'Unnamed: 7', 'Unnamed: 8', 'Unnamed: 9']

我认为上面删除的行Fab Tracking (w Completed) Report'在哪里?而且这些列没有名称...我在这里想念什么。

我也尝试过dataSet = dataSet[4:-2]

电子表格的图像: enter image description here

编辑: 在下面有人问我是否要删除列而不是行的评论之后,我发布了电子表格的图片。 如果我在excel中手动编辑此工作表并删除前4行,然后运行:dataSet.columns,它将为我提供列标题的名称。但是我不想每次都打开电子表格。我希望熊猫删除或忽略前4个,以便我可以获取标头的名称

2 个答案:

答案 0 :(得分:1)

在熊猫中,列名或标题是持久的,在删除/添加行时不会更改。如果您试图完全忽略文件的前4行,则可以使用pd.read_excel中的skiprows参数,如下所示-

pd.read_excel(excelFile, skiprows=4)

接下来是使用-

删除最后两行
dataSet = dataSet[:-2]

如果您要创建列名列表,则使用columnList=list(dataSet.columns)也更快。

答案 1 :(得分:0)

您要删除列还是行?

如果要删除列:

dataSet.drop('Fab Tracking (w Completed) Report', axis = 1, inplace = True)

运行此命令后,将在运行for循环时获得所需的输出。

如果要删除行,则可以使用已有的代码。 dataSet.drop(dataSet.head(4).index,inplace=True)

现在,您的for循环正在遍历列名,而不是行名。