从datafram中永久删除行

2024-04-23 21:18:57 发布

您现在位置:Python中文网/ 问答频道 /正文

如何从数据帧中永久删除行? 例如: 我有一个电子表格,它有带标题的列,但在前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行,这样我就可以得到标题的名称


Tags: in信息true标题forindexexceldataset
2条回答

在pandas中,列名或标题是持久的,在删除/追加行时不会更改。如果您试图完全忽略文件的前4行,可以像这样使用pd.read\u excel中的skiprows参数-

pd.read_excel(excelFile, skiprows=4)

然后使用-

dataSet = dataSet[:-2]

如果要创建列名列表,那么使用columnList=list(dataSet.columns)也会更快

您要删除列还是行

如果要删除列:

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

运行这个之后,当您运行for循环时,您将得到您想要的输出

如果您想删除行,那么您的代码就可以了dataSet.drop(dataSet.head(4).index,inplace=True)

现在,for循环正在迭代列名,而不是行名

相关问题 更多 >