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)