python dataframe pandas使用int来删除列

我明白,要删除一个列,你使用df.drop('列名',轴= 1)。 有没有办法使用数字索引而不是列名来删除列?

你可以像这样删除i索引的列:

 df.drop(df.columns[i], axis=1) 

这可能会奇怪,如果你有重复的名称列,所以要做到这一点,你可以重新命名列要删除列的新名称。 或者你可以像这样重新分配DataFrame:

 df = df.iloc[:, [j for j, c in enumerate(df.columns) if j != i]] 

像这样删除多个列:

 cols = [1,2,4,5,12] df.drop(df.columns[cols],axis=1,inplace=True) 

如果你真的想用整数(但为什么?),那么你可以build立一个字典。

 col_dict = {x: col for x, col in enumerate(df.columns)} 

那么df = df.drop(col_dict[0], 1)将按需要工作

编辑:你可以把它放在一个为你做的function,虽然这样它会创build字典,每次你打电话

 def drop_col_n(df, col_n_to_drop): col_dict = {x: col for x, col in enumerate(df.columns)} return df.drop(col_dict[col_n_to_drop], 1) df = drop_col_n(df, 2)