How to Iterate Over Columns in pandas DataFrame
To iterate over columns in a pandas DataFrame, use
for col in df.columns to get column names or for col, data in df.items() to get both column names and their data. This lets you process each column one by one easily.Syntax
There are two common ways to iterate over columns in a pandas DataFrame:
for col in df.columns:loops over column names only.for col, data in df.items():loops over column names and their data as Series.
Here, df is your DataFrame object.
python
for col in df.columns: print(col) for col, data in df.items(): print(f"Column: {col}") print(data)
Example
This example shows how to iterate over columns to print each column name and its values.
python
import pandas as pd data = { 'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'Los Angeles', 'Chicago'] } df = pd.DataFrame(data) for col, values in df.items(): print(f"Column: {col}") print(values.tolist())
Output
Column: Name
['Alice', 'Bob', 'Charlie']
Column: Age
[25, 30, 35]
Column: City
['New York', 'Los Angeles', 'Chicago']
Common Pitfalls
One common mistake is trying to iterate directly over the DataFrame, which iterates over rows, not columns.
Wrong way:
for col in df:
print(col)This actually works because iterating a DataFrame defaults to columns, but it only gives column names, not data.
Another mistake is using df.iterrows() which iterates rows, not columns.
Right way to get both column names and data is using df.items().
python
for col in df: print(f"Column name: {col}") for col, data in df.items(): print(f"Column: {col}") print(data)
Output
Column name: Name
Column name: Age
Column name: City
Column: Name
0 Alice
1 Bob
2 Charlie
Name: Name, dtype: object
Column: Age
0 25
1 30
2 35
Name: Age, dtype: int64
Column: City
0 New York
1 Los Angeles
2 Chicago
Name: City, dtype: object
Quick Reference
Summary of ways to iterate over columns:
| Method | Description | Example |
|---|---|---|
for col in df.columns | Iterate over column names only | for col in df.columns:
print(col) |
for col, data in df.items() | Iterate over column names and data | for col, data in df.items():
print(col, data) |
for col in df | Iterate over column names (less explicit) | for col in df:
print(col) |
Key Takeaways
Use
df.items() to iterate over columns and their data together.Iterating directly over
df or df.columns gives column names only.Avoid using
df.iterrows() when you want to iterate columns; it iterates rows.Converting column data to list with
tolist() helps when you want simple Python lists.Iterating columns is useful for column-wise operations or analysis.