删除pandas中的多个列

时间:2014-10-13 19:24:44

标签: python pandas

我试图在pandas数据框中删除多个列(我的数据集中的第2列和第70列,分别索引为1和69),并使用以下代码:

df.drop([df.columns[[1, 69]]], axis=1, inplace=True)

我收到以下错误:

TypeError: unhashable type: 'Index'

在我的代码中,[1,69]突出显示并说:

Expected type 'Integral', got 'list[int]' instead

以下代码执行我想要它成功完成的操作,但是在两行重复代码上(首先删除col索引69,然后是1,并且顺序确实很重要,因为删除较早的列会更改后面列的索引)。我以为我可以简单地将多个列索引指定为列表,但也许我上面有些错误?

df.drop([df.columns[69]], axis=1, inplace=True)
df.drop([df.columns[1]], axis=1, inplace=True)

有没有办法在一行上执行此操作,类似于上面的第一个代码段?

2 个答案:

答案 0 :(得分:90)

您不需要将其包含在[..]的列表中,只需提供列索引的子选择:

df.drop(df.columns[[1, 69]], axis=1, inplace=True)

因为索引对象已被视为类似列表。

答案 1 :(得分:8)

试试这个

df.drop(df.iloc[:, 1:69], inplace=True, axis=1)

这对我有用