0
0
PandasHow-ToBeginner · 3 min read

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:

MethodDescriptionExample
for col in df.columnsIterate over column names onlyfor col in df.columns: print(col)
for col, data in df.items()Iterate over column names and datafor col, data in df.items(): print(col, data)
for col in dfIterate 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.