我知道去掉一列要用df。Drop ('column name', axis=1)。是否有一种方法可以使用数字索引而不是列名来删除列?


当前回答

如果您真的想处理整数(为什么?),那么您可以构建一个字典。

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

那么df = df。Drop (col_dict[0], 1)将按预期工作

编辑:你可以把它放在一个为你做这件事的函数中,尽管这样它会在你每次调用它的时候创建字典

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)

其他回答

像这样删除多个列:

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

inplace=True用于在数据帧本身中进行更改,而不需要在数据帧的副本上进行列删除。如需保留原稿,请使用:

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

您需要根据列在数据框架中的位置来标识它们。例如,如果你想删除(del)列2、3和5,它将是,

df.drop(df.columns[[2,3,5]], axis = 1)

您可以使用下面的行删除前两列(或任何您不需要的列):

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

参考

如果您真的想处理整数(为什么?),那么您可以构建一个字典。

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

那么df = df。Drop (col_dict[0], 1)将按预期工作

编辑:你可以把它放在一个为你做这件事的函数中,尽管这样它会在你每次调用它的时候创建字典

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)

如果有两个名称相同的列。一种简单的方法是手动重命名列,就像这样

df.columns = ['column1', 'column2', 'column3']

然后你可以根据你的要求通过列索引,像这样:-

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

df。列[1]将删除索引1。

记住轴1 =列,轴0 =行。