如何从熊猫数据框中永久删除行? 例如: 我有一个电子表格,其中包含带有标题的列,但在我不希望的前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]
编辑:
在下面有人问我是否要删除列而不是行的评论之后,我发布了电子表格的图片。
如果我在excel中手动编辑此工作表并删除前4行,然后运行:dataSet.columns
,它将为我提供列标题的名称。但是我不想每次都打开电子表格。我希望熊猫删除或忽略前4个行,以便我可以获取标头的名称
答案 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循环正在遍历列名,而不是行名。