Способы удаления столбцов из таблицы в Python

Раздел: Анализ данных -> Обработка табличных данных

Удаление столбцов из таблицы в Python: методы и примеры

При работе с табличными данными в Python часто возникает необходимость удалить один или несколько столбцов. В зависимости от используемой структуры данных (pandas DataFrame, списки списков, массивы numpy) существуют разные подходы. Ниже рассмотрены наиболее популярные и эффективные способы.

Как наиболее эффективно удалить один или несколько столбцов из DataFrame?

Основным инструментом для удаления столбцов в pandas является метод drop(). Он позволяет указать имена столбцов, ось (axis=1) и настроить поведение при отсутствии столбцов.


import pandas as pd

df = pd.DataFrame({'A': [1,2,3], 'B': [4,5,6], 'C': [7,8,9]})
df_new = df.drop(columns=['B', 'C'])
print(df_new)
  

Python удалить столбцы (удаление столбцов из таблицы в python)

   A
0  1
1  2
2  3
  

Python csv (работа с csv в python)

Пояснения: drop(columns=['B','C']) возвращает новый DataFrame без указанных столбцов. Параметр axis=1 можно использовать вместо columns. Для изменения исходного объекта применяется inplace=True.

Проблема: если указан несуществующий столбец, возникает KeyError. Решение - использовать параметр errors='ignore', который пропустит отсутствующие имена.


df.drop(columns=['Z'], errors='ignore', inplace=True)
    

Как удалить столбец по имени с помощью оператора del?

Оператор del работает только с одним столбцом и изменяет исходный DataFrame.


df = pd.DataFrame({'A': [1,2], 'B': [3,4], 'C': [5,6]})
del df['B']
print(df)
  
   A  C
0  1  5
1  2  6
  

Цель: когда требуется удалить один столбец без создания копии данных.

Ошибка: удаление несуществующего столбца вызывает KeyError. Оператор не поддерживает список имен.

Как удалить столбец и одновременно получить его значения?

Метод pop() удаляет столбец по имени и возвращает его содержимое в виде Series.


df = pd.DataFrame({'X': [10,20], 'Y': [30,40]})
col_Y = df.pop('Y')
print(df)
print(col_Y)
  
    X
0  10
1  20
0    30
1    40
Name: Y, dtype: int64
  

Используется, когда удаляемый столбец нужен для дальнейшей обработки.

Ограничение: можно удалить только один столбец.

Как удалить столбцы в обычном списке списков (без pandas)?

Для двумерного списка применяются списковые включения (list comprehension) или цикл с удалением из каждой строки по индексу.


data = [[1,2,3], [4,5,6], [7,8,9]]
# удаляем второй столбец (индекс 1)
data_clean = [row[:1] + row[2:] for row in data]
print(data_clean)
  
[[1, 3], [4, 6], [7, 9]]
  

Цель: работа с простыми табличными данными без внешних библиотек.

Проблема: при удалении нескольких столбцов нужно аккуратно отслеживать индексы, особенно если удаление выполняется последовательно.

Как удалить столбцы из массива numpy?

Функция np.delete() удаляет строки или столбцы, указывая ось.


import numpy as np
arr = np.array([[1,2,3],[4,5,6]])
arr_new = np.delete(arr, [1], axis=1)  # удаляем столбец с индексом 1
print(arr_new)
  
[[1 3]
 [4 5]]
  

Подходит для числовых массивов, когда требуется эффективная работа с памятью.

Ошибка: неверное указание оси (axis=0 вместо axis=1) приводит к удалению строк.

Расширенные примеры удаления столбцов

Удаление столбцов по условию (например, с большим количеством пропусков)

Пример

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'A': [1,2,None],
    'B': [4,None,6],
    'C': [7,8,9],
    'D': [None, None, None]
})
# Удаляем столбцы, где доля пропусков > 50%
threshold = 0.5
df_clean = df.loc[:, df.isnull().mean() <= threshold]
print(df_clean)
     A    B  C
0  1.0  4.0  7
1  2.0  NaN  8
2  NaN  6.0  9

Удаление столбцов по регулярному выражению имени

Пример

import pandas as pd
df = pd.DataFrame({'col1': [1], 'col2': [2], 'col_extra': [3], 'col3': [4]})
# Удаляем все столбцы, начинающиеся с 'col_' 
df_filtered = df.drop(columns=df.columns[df.columns.str.contains(r'^col_')])
print(df_filtered)
   col1  col2  col3
0     1     2     4

Удаление столбцов по индексам в pandas с использованием iloc

Пример

df = pd.DataFrame({'A':[1],'B':[2],'C':[3],'D':[4]})
# Удаляем столбцы по позициям 1 и 2 (B и C)
df_drop = df.iloc[:, [0,3]]  # сохраняем только 0 и 3
print(df_drop)
   A  D
0  1  4

Удаление столбцов из списка списков по нескольким индексам

Пример

data = [[1,2,3,4],[5,6,7,8]]
indices_to_remove = [0,2]  # удаляем 1-й и 3-й столбцы
for idx in sorted(indices_to_remove, reverse=True):
    for row in data:
        del row[idx]
print(data)
[[2, 4], [6, 8]]

Удаление столбцов из массива numpy с разными условиями

Пример

import numpy as np
arr = np.arange(12).reshape(3,4)
print("Исходный массив:")
print(arr)
# Удаляем столбцы, где сумма элементов < 15
mask = np.sum(arr, axis=0) >= 15
arr_new = arr[:, mask]
print("После удаления:")
print(arr_new)
Исходный массив:
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
После удаления:
[[ 2  3]
 [ 6  7]
 [10 11]]

Удаление столбцов из таблицы в Python - comments

En
Python удалить столбцы (python)