Bird
Raised Fist0
Data Analysis Pythondata~20 mins

Selecting rows (loc, iloc) in Data Analysis Python - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Row Selection Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of iloc row selection
What is the output of this code snippet selecting rows using iloc?
Data Analysis Python
import pandas as pd

df = pd.DataFrame({
    'A': [10, 20, 30, 40],
    'B': [5, 15, 25, 35]
})

result = df.iloc[1:3]
print(result)
A
    A   B
1  20  15
3  40  35
B
    A   B
1  20  15
2  30  25
C
    A   B
2  30  25
3  40  35
D
    A   B
0  10   5
1  20  15
Attempts:
2 left
💡 Hint
Remember that iloc uses integer position and the end index is exclusive.
❓ Predict Output
intermediate
2:00remaining
Output of loc row selection with label slicing
What will be printed by this code using loc to select rows by label?
Data Analysis Python
import pandas as pd

df = pd.DataFrame({
    'X': [100, 200, 300, 400],
    'Y': [1, 2, 3, 4]
}, index=['a', 'b', 'c', 'd'])

result = df.loc['b':'c']
print(result)
A
    X  Y
c  300  3
d  400  4
B
    X  Y
b  200  2
C
    X  Y
b  200  2
c  300  3
D
    X  Y
a  100  1
b  200  2
c  300  3
Attempts:
2 left
💡 Hint
loc includes the end label in slicing.
🔧 Debug
advanced
2:00remaining
Identify the error in iloc row selection
What error will this code raise when selecting rows with iloc?
Data Analysis Python
import pandas as pd

df = pd.DataFrame({'val': [1, 2, 3]})

result = df.iloc['1']
print(result)
ATypeError: cannot do positional indexing on a non-integer key
BKeyError: '1'
CIndexError: single positional indexer is out-of-bounds
DNo error, outputs the second row
Attempts:
2 left
💡 Hint
iloc expects integer positions, not strings.
❓ data_output
advanced
2:00remaining
Result of mixed loc and iloc selection
Given this DataFrame, what is the output of selecting rows using loc and columns using iloc?
Data Analysis Python
import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': [9, 10, 11, 12]
}, index=['w', 'x', 'y', 'z'])

result = df.loc['x':'z'].iloc[:, 1:3]
print(result)
A
    B   C
x  6  10
y  7  11
z  8  12
B
    A   B
x  2   6
y  3   7
z  4   8
C
    B   C
w  5   9
x  6  10
y  7  11
D
    A   C
x  2  10
y  3  11
z  4  12
Attempts:
2 left
💡 Hint
loc selects rows by label, iloc selects columns by position.
🧠 Conceptual
expert
3:00remaining
Difference between loc and iloc in row selection
Which statement correctly describes the difference between loc and iloc when selecting rows in pandas?
A<code>loc</code> selects rows by integer position and includes the end index; <code>iloc</code> selects rows by label and excludes the end label.
B<code>loc</code> selects rows by integer position and excludes the end index; <code>iloc</code> selects rows by label and includes the end label.
C<code>loc</code> and <code>iloc</code> both select rows by label but differ in column selection methods.
D<code>loc</code> selects rows by label and includes the end label in slices; <code>iloc</code> selects rows by integer position and excludes the end index.
Attempts:
2 left
💡 Hint
Think about how slicing works differently for labels vs positions.

Practice

(1/5)
1. Which of the following statements correctly describes the difference between loc and iloc in pandas?
easy
A. loc selects rows by label, iloc selects rows by position.
B. loc selects columns by position, iloc selects rows by label.
C. loc selects rows by position, iloc selects columns by label.
D. loc and iloc both select rows by position.

Solution

  1. Step 1: Understand loc usage

    loc selects rows using the row labels or names, not their numeric position.
  2. Step 2: Understand iloc usage

    iloc selects rows based on their integer position, starting at zero.
  3. Final Answer:

    loc selects rows by label, iloc selects rows by position. -> Option A
  4. Quick Check:

    loc = label, iloc = position [OK]
Hint: Remember: loc = label, iloc = integer position [OK]
Common Mistakes:
  • Confusing label with position
  • Using iloc with labels
  • Assuming loc uses integer positions
2. Which of the following is the correct syntax to select the row with label '2023-01-01' from a DataFrame df using loc?
easy
A. df.loc[2023-01-01]
B. df.iloc[2023-01-01]
C. df.iloc['2023-01-01']
D. df.loc['2023-01-01']

Solution

  1. Step 1: Identify correct method for label selection

    To select by label, use loc with the label as a string if it is a string label.
  2. Step 2: Check syntax for string label

    The label '2023-01-01' must be in quotes inside loc brackets.
  3. Final Answer:

    df.loc['2023-01-01'] -> Option D
  4. Quick Check:

    Use quotes for string labels with loc [OK]
Hint: Use quotes around string labels inside loc brackets [OK]
Common Mistakes:
  • Omitting quotes around string labels
  • Using iloc with labels
  • Using loc without brackets
3. Given the DataFrame df below:
import pandas as pd
data = {'Name': ['Anna', 'Bob', 'Cara', 'Dave'], 'Age': [23, 35, 45, 29]}
df = pd.DataFrame(data, index=['a', 'b', 'c', 'd'])

What is the output of df.loc['b']?
medium
A. Name Bob Age 35 Name: 1, dtype: object
B. Name Cara Age 45 Name: c, dtype: object
C. Name Bob Age 35 Name: b, dtype: object
D. Error: KeyError

Solution

  1. Step 1: Understand DataFrame index labels

    The DataFrame has index labels 'a', 'b', 'c', 'd'. The row with label 'b' corresponds to Bob, age 35.
  2. Step 2: Use loc to select row by label

    df.loc['b'] returns the row with label 'b' as a Series with Name and Age values.
  3. Final Answer:

    Name Bob Age 35 Name: b, dtype: object -> Option C
  4. Quick Check:

    loc selects row 'b' with Bob's data [OK]
Hint: loc uses index labels exactly as given [OK]
Common Mistakes:
  • Using iloc instead of loc
  • Confusing label 'b' with position 1
  • Expecting a DataFrame instead of Series
4. Consider this code snippet:
import pandas as pd
data = {'Value': [10, 20, 30]}
df = pd.DataFrame(data, index=[1, 2, 3])
row = df.loc[2]

What is wrong with this code if the intention was to select the second row by position?
medium
A. It selects the row with label 2, not the second row by position.
B. It raises a KeyError because 2 is not a label.
C. It correctly selects the second row by position.
D. It raises a TypeError because loc needs a string.

Solution

  1. Step 1: Check DataFrame index labels

    The DataFrame index labels are [1, 2, 3]. Using loc[2] selects the row with label 2, not the second row by position.
  2. Step 2: Understand difference between label and position

    The second row by position is at index 1 (zero-based), so iloc[1] should be used to select by position.
  3. Final Answer:

    It selects the row with label 2, not the second row by position. -> Option A
  4. Quick Check:

    loc uses labels, iloc uses positions [OK]
Hint: Use iloc for position, loc for label [OK]
Common Mistakes:
  • Using loc to select by position
  • Confusing index labels with positions
  • Expecting loc to be zero-based
5. You have a DataFrame df with a non-numeric index:
import pandas as pd
data = {'Score': [88, 92, 95, 70]}
labels = ['a', 'b', 'c', 'd']
df = pd.DataFrame(data, index=labels)

How would you select the first two rows by position and the rows labeled 'b' and 'c' by label, then combine these selections into one DataFrame?
hard
A. df.loc[:2] + df.loc[['b', 'c']]
B. pd.concat([df.iloc[:2], df.loc[['b', 'c']]])
C. df.iloc[['a', 'b']] + df.loc[1:2]
D. df.loc[['a', 'b']] + df.iloc[1:2]

Solution

  1. Step 1: Select first two rows by position

    Use df.iloc[:2] to select rows at positions 0 and 1.
  2. Step 2: Select rows labeled 'b' and 'c'

    Use df.loc[['b', 'c']] to select rows by their labels.
  3. Step 3: Combine selections into one DataFrame

    Use pd.concat to join the two selections vertically.
  4. Final Answer:

    pd.concat([df.iloc[:2], df.loc[['b', 'c']]]) -> Option B
  5. Quick Check:

    Combine iloc and loc selections with concat [OK]
Hint: Use pd.concat to join iloc and loc selections [OK]
Common Mistakes:
  • Trying to add DataFrames with + operator
  • Mixing labels and positions incorrectly
  • Using loc with positions or iloc with labels
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