python dataframe pandas drop column using int
Categories:
Mastering Pandas: Dropping DataFrame Columns by Integer Position

Learn how to efficiently remove columns from a Pandas DataFrame using their integer-based positions, a crucial skill for data manipulation in Python.
Pandas DataFrames are fundamental structures for data analysis in Python. Often, you'll need to clean or transform your data by removing unnecessary columns. While dropping columns by name is common, there are scenarios where you might need to drop them by their integer position. This article will guide you through various methods to achieve this, highlighting best practices and potential pitfalls.
Understanding Column Indexing in Pandas
Before diving into dropping columns, it's important to understand how Pandas handles column indexing. Columns in a DataFrame are ordered, and each column has an implicit integer position starting from 0
for the leftmost column. This positional indexing is distinct from the column labels (names), which are typically strings. When you drop by integer, you are referring to this 0
-based position.
flowchart TD A[Start with DataFrame] --> B{Identify Column Position} B --> C{Select Drop Method} C --> D["df.drop(df.columns[index], axis=1)"] C --> E["df.drop(columns=df.columns[[index1, index2]])"] D --> F[Resulting DataFrame] E --> F
Flowchart illustrating the process of dropping columns by integer position.
Method 1: Dropping a Single Column by Integer Position
The most straightforward way to drop a single column by its integer position is to first retrieve its name using df.columns[index]
and then pass that name to the df.drop()
method. Remember to specify axis=1
to indicate that you are dropping a column, not a row.
import pandas as pd
# Create a sample DataFrame
data = {'col_A': [1, 2, 3], 'col_B': [4, 5, 6], 'col_C': [7, 8, 9]}
df = pd.DataFrame(data)
print("Original DataFrame:\n", df)
# Drop the column at integer position 1 (which is 'col_B')
column_to_drop_index = 1
column_name = df.columns[column_to_drop_index]
df_dropped = df.drop(column_name, axis=1)
print("\nDataFrame after dropping column at position 1:\n", df_dropped)
Example of dropping a single column by its integer position.
df.columns[index]
to get the column name before dropping is generally safer and more explicit than trying to pass the integer directly to drop()
for column removal, as drop()
primarily expects labels for columns.Method 2: Dropping Multiple Columns by Integer Positions
To drop multiple columns by their integer positions, you can create a list of column names corresponding to those positions and pass this list to the df.drop()
method. This approach is flexible and allows you to remove non-contiguous columns.
import pandas as pd
# Create a sample DataFrame
data = {'col_A': [1, 2, 3], 'col_B': [4, 5, 6], 'col_C': [7, 8, 9], 'col_D': [10, 11, 12]}
df = pd.DataFrame(data)
print("Original DataFrame:\n", df)
# Drop columns at integer positions 0 and 2 (col_A and col_C)
columns_to_drop_indices = [0, 2]
columns_to_drop_names = df.columns[columns_to_drop_indices]
df_dropped_multiple = df.drop(columns_to_drop_names, axis=1)
print("\nDataFrame after dropping columns at positions 0 and 2:\n", df_dropped_multiple)
Example of dropping multiple columns by their integer positions.
Method 3: Dropping a Range of Columns by Integer Position
If you need to drop a contiguous range of columns, you can leverage Python's slicing capabilities on df.columns
to select the desired column names. This is particularly useful for large DataFrames where manually listing each column name would be cumbersome.
import pandas as pd
# Create a sample DataFrame with more columns
data = {'col_0': [1, 2], 'col_1': [3, 4], 'col_2': [5, 6], 'col_3': [7, 8], 'col_4': [9, 10]}
df = pd.DataFrame(data)
print("Original DataFrame:\n", df)
# Drop columns from position 1 (inclusive) to 3 (exclusive) - col_1 and col_2
columns_to_drop_range = df.columns[1:3]
df_dropped_range = df.drop(columns_to_drop_range, axis=1)
print("\nDataFrame after dropping columns from position 1 to 3 (exclusive):\n", df_dropped_range)
Example of dropping a range of columns using slicing on integer positions.