我试图在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)
有没有办法在一行上执行此操作,类似于上面的第一个代码段?
答案 0 :(得分:90)
您不需要将其包含在[..]
的列表中,只需提供列索引的子选择:
df.drop(df.columns[[1, 69]], axis=1, inplace=True)
因为索引对象已被视为类似列表。
答案 1 :(得分:8)
试试这个
df.drop(df.iloc[:, 1:69], inplace=True, axis=1)
这对我有用