Python DataFrame Pandas Drop Column с использованием Int
155
Я понимаю, что для удаления столбца вы используете df.drop ('имя столбца', axis = 1). Есть ли способ удалить столбец, используя числовой индекс вместо имени столбца?
Вы можете удалить столбец в iиндексе следующим образом:
df.drop(df.columns[i], axis=1)
Это может работать странно, если у вас есть повторяющиеся имена в столбцах, поэтому для этого вы можете переименовать столбец, вы хотите удалить столбец новым именем. Или вы можете переназначить DataFrame следующим образом:
df = df.iloc[:,[j for j, c in enumerate(df.columns)if j != i]]
inplace=Trueиспользуется для внесения изменений в сам фрейм данных, не выполняя изменение столбца в копии фрейма данных. Если вам нужно сохранить оригинал, используйте:
если вы не используете, inplace=Trueто вам придется сделать, df = df.drop()если вы хотите увидеть изменения в dfсебе.
мюон
Как индексировать столбцы, если мне нужно отбросить 100 столбцов, которые являются непрерывными в середине фрейма данных.
Сай Киран
36
Если имеется несколько столбцов с одинаковыми именами, приведенные здесь решения удаляют все столбцы, которые могут не соответствовать тому, что нужно искать. Это может иметь место, если кто-то пытается удалить дубликаты столбцов, кроме одного экземпляра. Пример ниже проясняет эту ситуацию:
# make a df with duplicate columns 'x'
df = pd.DataFrame({'x': range(5),'x':range(5),'y':range(6,11)}, columns =['x','x','y'])
dfOut[495]:
x x y000611172228333944410# attempting to drop the first column according to the solution offered so far
df.drop(df.columns[0], axis =1)
y06172839410
Как видите, оба столбца X были удалены. Альтернативное решение:
column_numbers =[x for x in range(df.shape[1])]# list of columns' integer indices
column_numbers .remove(0)#removing column integer index 0
df.iloc[:, column_numbers]#return all columns except the 0th column
x y0061172283394410
Как видите, это действительно удаляет только 0-й столбец (первый «х»).
если вы действительно хотите сделать это с целыми числами (но почему?), то вы можете создать словарь.
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)
Ответы:
Вы можете удалить столбец в
i
индексе следующим образом:Это может работать странно, если у вас есть повторяющиеся имена в столбцах, поэтому для этого вы можете переименовать столбец, вы хотите удалить столбец новым именем. Или вы можете переназначить DataFrame следующим образом:
источник
Удалите несколько столбцов, как это:
inplace=True
используется для внесения изменений в сам фрейм данных, не выполняя изменение столбца в копии фрейма данных. Если вам нужно сохранить оригинал, используйте:источник
inplace=True
то вам придется сделать,df = df.drop()
если вы хотите увидеть изменения вdf
себе.Если имеется несколько столбцов с одинаковыми именами, приведенные здесь решения удаляют все столбцы, которые могут не соответствовать тому, что нужно искать. Это может иметь место, если кто-то пытается удалить дубликаты столбцов, кроме одного экземпляра. Пример ниже проясняет эту ситуацию:
Как видите, оба столбца X были удалены. Альтернативное решение:
Как видите, это действительно удаляет только 0-й столбец (первый «х»).
источник
Вам необходимо определить столбцы на основе их положения в кадре данных. Например, если вы хотите удалить (del) столбец с номерами 2,3 и 5, это будет,
источник
Если у вас есть два столбца с одинаковым именем. Один простой способ - вручную переименовать столбцы следующим образом:
Затем вы можете перейти через индекс столбца, как вы просили, например:
df.column[1]
упадет индекс 1.Помните, ось 1 = столбцы и ось 0 = строки.
источник
если вы действительно хотите сделать это с целыми числами (но почему?), то вы можете создать словарь.
тогда
df = df.drop(col_dict[0], 1)
будет работать по желаниюредактировать: вы можете поместить его в функцию, которая сделает это за вас, хотя таким образом он создает словарь каждый раз, когда вы вызываете его
источник
Вы можете использовать следующую строку, чтобы удалить первые два столбца (или любой столбец, который вам не нужен):
Ссылка
источник
Поскольку может быть несколько столбцов с одинаковым именем, мы должны сначала переименовать столбцы. Вот код для решения.
источник