Selecting columns by name in Pandas - Mini Project: Build & Apply
sales_data with these exact columns and rows:Product: ['Apple', 'Banana', 'Carrot', 'Dates']Price: [1.2, 0.5, 0.8, 3.0]Quantity: [10, 20, 15, 7]Date: ['2024-06-01', '2024-06-01', '2024-06-02', '2024-06-02']Use pd.DataFrame with a dictionary where keys are column names and values are lists of column values.
columns_to_select with these exact column names: 'Product' and 'Quantity'Use square brackets to create a list with the exact column names as strings.
selected_data by selecting the columns in columns_to_select from sales_dataUse square brackets with the list of column names to select columns from the DataFrame.
selected_data DataFrame to see only the selected columnsUse print(selected_data) to show the selected columns.
Practice
Which syntax correctly selects a single column named 'Age' from a pandas DataFrame df?
Solution
Step 1: Understand single column selection syntax
Using single brackets with the column name as a string selects one column and returns a Series.Step 2: Compare options
df['Age']is the correct syntax. Double brackets return a DataFrame, and other options are invalid syntax.Final Answer:
df['Age'] -> Option BQuick Check:
Single brackets select one column [OK]
- Using double brackets for single column returns DataFrame, not Series
- Trying to use parentheses instead of brackets
- Using dot notation with brackets incorrectly
Which of the following is the correct syntax to select multiple columns 'Name' and 'Salary' from a DataFrame df?
Solution
Step 1: Recall syntax for selecting multiple columns
Multiple columns must be passed as a list inside double brackets.Step 2: Evaluate options
Onlydf[['Name', 'Salary']]correctly uses a list inside double brackets. Others are invalid or return separate Series.Final Answer:
df[['Name', 'Salary']] -> Option AQuick Check:
Double brackets + list select multiple columns [OK]
- Using single brackets with multiple column names separated by comma
- Using bitwise AND (&) instead of list
- Trying to select columns separately without combining
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)Solution
Step 1: Understand the selection
The code selects columns 'City' and 'Age' in that order from the DataFrame.Step 2: Check the output order and values
The output DataFrame has columns 'City' then 'Age' with values from original data.Final Answer:
City Age 0 NY 25 1 LA 30 -> Option CQuick Check:
Selected columns match output order [OK]
- Mixing column order in output
- Selecting wrong columns
- Confusing Series output with DataFrame output
What is wrong with this code to select columns 'A' and 'B' from DataFrame df?
df['A', 'B']
Solution
Step 1: Analyze the indexing syntax
Using single brackets with multiple comma-separated strings creates a tuple key, not a list.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.Final Answer:
It raises a KeyError because tuple ('A', 'B') is not a column -> Option AQuick Check:
Single brackets with comma create tuple key, causing KeyError [OK]
- Using single brackets with multiple column names separated by comma
- Expecting a DataFrame but getting error
- Confusing tuple with list in indexing
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?
Solution
Step 1: Select columns 'Name' and 'Salary'
Use double brackets with a list:df[['Name', 'Salary']]to get a DataFrame with those columns.Step 2: Rename 'Salary' to 'Income'
Userename(columns={'Salary': 'Income'})to rename the column correctly.Final Answer:
new_df = df[['Name', 'Salary']].rename(columns={'Salary': 'Income'}) -> Option DQuick Check:
Select columns then rename with columns dict [OK]
- Using single brackets for multiple columns
- Passing rename argument without 'columns=' keyword
- Passing list instead of dict to rename
Ready to prove it?
Pass the test and this pattern moves unknown
