Bird
Raised Fist0
Pandasdata~10 mins

Selecting columns by name in Pandas - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Selecting columns by name
Start with DataFrame
↓
Specify column name(s)
↓
Access columns using df[column_name
↓
Return selected column(s) as Series or DataFrame
↓
Use or display selected data
Start with a DataFrame, specify the column name(s) you want, access them using the DataFrame syntax, and get the selected data back.
Execution Sample
Pandas
import pandas as pd

df = pd.DataFrame({
  'Name': ['Alice', 'Bob'],
  'Age': [25, 30],
  'City': ['NY', 'LA']
})

selected = df['Age']
This code creates a DataFrame and selects the 'Age' column by its name.
Execution Table
StepActionCodeResult TypeOutput
1Create DataFramedf = pd.DataFrame({...})DataFrame{'Name': ['Alice', 'Bob'], 'Age': [25, 30], 'City': ['NY', 'LA']}
2Select single column by nameselected = df['Age']Series[25, 30]
3Select multiple columns by listselected = df[['Name', 'City']]DataFrame{'Name': ['Alice', 'Bob'], 'City': ['NY', 'LA']}
4Attempt select non-existing columnselected = df['Salary']KeyErrorError: 'Salary' not found in columns
5End--Selection complete or error raised
💡 Selection stops after returning the requested column(s) or raising an error if column not found.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4Final
dfundefined{Name, Age, City}{Name, Age, City}{Name, Age, City}{Name, Age, City}{Name, Age, City}
selectedundefinedundefined[25, 30]{Name: ['Alice', 'Bob'], City: ['NY', 'LA']}KeyErrorKeyError or selected data
Key Moments - 2 Insights
Why does selecting a single column return a Series but selecting multiple columns returns a DataFrame?
Selecting one column like df['Age'] returns a Series because it's a single column of data. Selecting multiple columns with a list like df[['Name', 'City']] returns a DataFrame because it contains multiple columns. See execution_table rows 2 and 3.
What happens if you try to select a column name that does not exist?
Pandas raises a KeyError because the column is not found in the DataFrame. This is shown in execution_table row 4.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the type of 'selected' after step 2?
ASeries
BList
CDataFrame
DDictionary
💡 Hint
Check the 'Result Type' column in execution_table row 2.
At which step does the code raise an error for selecting a non-existing column?
AStep 2
BStep 3
CStep 4
DStep 5
💡 Hint
Look for 'KeyError' in the 'Result Type' column in execution_table.
If you want to select columns 'Name' and 'Age' together, which code would you use?
Adf['Name', 'Age']
Bdf[['Name', 'Age']]
Cdf['Name' & 'Age']
Ddf['Name'] + df['Age']
💡 Hint
See execution_table row 3 for selecting multiple columns.
Concept Snapshot
Selecting columns by name in pandas:
- Use df['col'] for single column (returns Series)
- Use df[['col1', 'col2']] for multiple columns (returns DataFrame)
- Column names must exist or KeyError occurs
- Useful to focus on specific data in DataFrame
Full Transcript
This visual execution shows how to select columns by name in pandas. We start with a DataFrame containing columns 'Name', 'Age', and 'City'. Selecting a single column like 'Age' returns a Series with that column's data. Selecting multiple columns using a list returns a DataFrame with those columns. If a column name does not exist, pandas raises a KeyError. The variable tracker shows how 'df' stays the same while 'selected' changes depending on the selection. Key moments clarify why single vs multiple column selection returns different types and what happens on errors. The quiz tests understanding of these steps and correct syntax for multiple column selection.

Practice

(1/5)
1.

Which syntax correctly selects a single column named 'Age' from a pandas DataFrame df?

easy
A. df.Age[]
B. df['Age']
C. df[['Age']]
D. df('Age')

Solution

  1. Step 1: Understand single column selection syntax

    Using single brackets with the column name as a string selects one column and returns a Series.
  2. Step 2: Compare options

    df['Age'] is the correct syntax. Double brackets return a DataFrame, and other options are invalid syntax.
  3. Final Answer:

    df['Age'] -> Option B
  4. Quick Check:

    Single brackets select one column [OK]
Hint: Use single brackets for one column, double for many [OK]
Common Mistakes:
  • Using double brackets for single column returns DataFrame, not Series
  • Trying to use parentheses instead of brackets
  • Using dot notation with brackets incorrectly
2.

Which of the following is the correct syntax to select multiple columns 'Name' and 'Salary' from a DataFrame df?

easy
A. df[['Name', 'Salary']]
B. df['Name', 'Salary']
C. df['Name' & 'Salary']
D. df.Name, df.Salary

Solution

  1. Step 1: Recall syntax for selecting multiple columns

    Multiple columns must be passed as a list inside double brackets.
  2. Step 2: Evaluate options

    Only df[['Name', 'Salary']] correctly uses a list inside double brackets. Others are invalid or return separate Series.
  3. Final Answer:

    df[['Name', 'Salary']] -> Option A
  4. Quick Check:

    Double brackets + list select multiple columns [OK]
Hint: Use double brackets with list for multiple columns [OK]
Common Mistakes:
  • Using single brackets with multiple column names separated by comma
  • Using bitwise AND (&) instead of list
  • Trying to select columns separately without combining
3.

Given the DataFrame df below, what is the output of df[['City', 'Age']]?

import pandas as pd
data = {'Name': ['Alice', 'Bob'], 'Age': [25, 30], 'City': ['NY', 'LA']}
df = pd.DataFrame(data)
medium
A.
   City  Name
0    NY  Alice
1    LA    Bob
B.
   Name  Age
0  Alice   25
1    Bob   30
C.
   City  Age
0    NY   25
1    LA   30
D.
   Age  City
0   25    NY
1   30    LA

Solution

  1. Step 1: Understand the selection

    The code selects columns 'City' and 'Age' in that order from the DataFrame.
  2. Step 2: Check the output order and values

    The output DataFrame has columns 'City' then 'Age' with values from original data.
  3. Final Answer:

    City Age 0 NY 25 1 LA 30 -> Option C
  4. Quick Check:

    Selected columns match output order [OK]
Hint: Output columns appear in the order listed inside double brackets [OK]
Common Mistakes:
  • Mixing column order in output
  • Selecting wrong columns
  • Confusing Series output with DataFrame output
4.

What is wrong with this code to select columns 'A' and 'B' from DataFrame df?

df['A', 'B']
medium
A. It raises a KeyError because tuple ('A', 'B') is not a column
B. It returns a DataFrame with columns 'A' and 'B'
C. It returns a Series with combined values of 'A' and 'B'
D. It raises a SyntaxError due to wrong brackets

Solution

  1. Step 1: Analyze the indexing syntax

    Using single brackets with multiple comma-separated strings creates a tuple key, not a list.
  2. Step 2: Understand pandas column selection behavior

    Since ('A', 'B') is a tuple, pandas looks for a column with that exact tuple name, which does not exist, causing KeyError.
  3. Final Answer:

    It raises a KeyError because tuple ('A', 'B') is not a column -> Option A
  4. Quick Check:

    Single brackets with comma create tuple key, causing KeyError [OK]
Hint: Use double brackets with list for multiple columns to avoid KeyError [OK]
Common Mistakes:
  • Using single brackets with multiple column names separated by comma
  • Expecting a DataFrame but getting error
  • Confusing tuple with list in indexing
5.

You have a DataFrame df with columns 'Name', 'Age', 'Salary', and 'Department'. You want to create a new DataFrame with only 'Name' and 'Salary', but also want to rename 'Salary' to 'Income'. Which code correctly does this?

hard
A.
new_df = df[['Name', 'Salary']].rename(columns=['Name', 'Income'])
B.
new_df = df['Name', 'Salary'].rename(columns={'Salary': 'Income'})
C.
new_df = df[['Name', 'Salary']].rename({'Salary': 'Income'})
D.
new_df = df[['Name', 'Salary']].rename(columns={'Salary': 'Income'})

Solution

  1. Step 1: Select columns 'Name' and 'Salary'

    Use double brackets with a list: df[['Name', 'Salary']] to get a DataFrame with those columns.
  2. Step 2: Rename 'Salary' to 'Income'

    Use rename(columns={'Salary': 'Income'}) to rename the column correctly.
  3. Final Answer:

    new_df = df[['Name', 'Salary']].rename(columns={'Salary': 'Income'}) -> Option D
  4. Quick Check:

    Select columns then rename with columns dict [OK]
Hint: Select columns first, then rename with columns dict [OK]
Common Mistakes:
  • Using single brackets for multiple columns
  • Passing rename argument without 'columns=' keyword
  • Passing list instead of dict to rename
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard