0
0
Pandasdata~20 mins

loc vs iloc mental model in Pandas - Practice Questions

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Loc vs Iloc Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of loc with label slicing
What is the output of this code snippet using loc with label slicing on a DataFrame?
Pandas
import pandas as pd

df = pd.DataFrame({
    'A': [10, 20, 30, 40],
    'B': [1, 2, 3, 4]
}, index=['a', 'b', 'c', 'd'])

result = df.loc['b':'d', 'A']
print(result)
A
b    20
c    30
d    40
Name: A, dtype: int64
B
b    20
c    30
Name: A, dtype: int64
C
1    20
2    30
3    40
Name: A, dtype: int64
D
20    1
30    2
40    3
Name: A, dtype: int64
Attempts:
2 left
💡 Hint
Remember that loc includes the end label in slicing.
Predict Output
intermediate
2:00remaining
Output of iloc with integer slicing
What is the output of this code snippet using iloc with integer slicing on a DataFrame?
Pandas
import pandas as pd

df = pd.DataFrame({
    'A': [10, 20, 30, 40],
    'B': [1, 2, 3, 4]
}, index=['a', 'b', 'c', 'd'])

result = df.iloc[1:3, 0]
print(result)
A
b    20
c    30
Name: A, dtype: int64
B
b    20
c    30
d    40
Name: A, dtype: int64
C
1    20
2    30
Name: A, dtype: int64
D
20    1
30    2
Name: A, dtype: int64
Attempts:
2 left
💡 Hint
Remember that iloc uses integer positions and excludes the end index in slicing.
data_output
advanced
2:30remaining
Difference in output between loc and iloc with mixed index
Given this DataFrame with a non-integer index, what is the output of df.loc[2:4, 'X'] and df.iloc[2:4, 0]?
Pandas
import pandas as pd

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

loc_result = df.loc[2:4, 'X']
iloc_result = df.iloc[2:4, 0]
print('loc_result:\n', loc_result)
print('iloc_result:\n', iloc_result)
A
loc_result:
1    100
2    200
3    300
Name: X, dtype: int64
iloc_result:
2    200
3    300
Name: X, dtype: int64
B
loc_result:
2    200
3    300
4    400
Name: X, dtype: int64
iloc_result:
2    200
3    300
Name: X, dtype: int64
C
loc_result:
2    200
3    300
4    400
Name: X, dtype: int64
iloc_result:
3    300
4    400
Name: X, dtype: int64
D
loc_result:
3    300
4    400
5    500
Name: X, dtype: int64
iloc_result:
1    100
2    200
Name: X, dtype: int64
Attempts:
2 left
💡 Hint
Recall that loc uses labels and includes the end label, while iloc uses integer positions and excludes the end index.
🔧 Debug
advanced
2:00remaining
Identify the error in using loc with integer index
What error will this code raise and why?
Pandas
import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6]
}, index=[10, 20, 30])

result = df.loc[1]
print(result)
ATypeError: unhashable type: 'int'
BIndexError: single positional indexer is out-of-bounds
CKeyError: 1
DNo error, prints the first row
Attempts:
2 left
💡 Hint
Check if the label 1 exists in the DataFrame index.
🚀 Application
expert
2:30remaining
Selecting rows with loc vs iloc in a real-world scenario
You have a DataFrame df with a date index from '2023-01-01' to '2023-01-10'. You want to select data from '2023-01-03' to '2023-01-06'. Which option correctly selects these rows?
Pandas
import pandas as pd

dates = pd.date_range('2023-01-01', '2023-01-10')
df = pd.DataFrame({'value': range(10)}, index=dates)

# Select rows here
Adf.iloc[2:6]
Bdf.iloc['2023-01-03':'2023-01-06']
Cdf.loc[2:5]
Ddf.loc['2023-01-03':'2023-01-06']
Attempts:
2 left
💡 Hint
Remember that loc uses labels (dates here), and iloc uses integer positions.