Selects the value where row label is 'row1' and column label is 'colA'.
Pandas
df.loc['row1', 'colA']
Selects the value at first row (position 0) and second column (position 1).
Pandas
df.iloc[0, 1]
Selects rows from 'row1' to 'row3' and columns from 'colA' to 'colC' inclusive.
Pandas
df.loc['row1':'row3', 'colA':'colC']
Selects first 3 rows and first 2 columns by position (end exclusive).
Pandas
df.iloc[0:3, 0:2]
Sample Program
This code shows how to pick single values and slices from a table using loc and iloc. It uses labels for loc and positions for iloc.
Pandas
import pandas as pd
# Create a simple DataFrame with labels
data = {'colA': [10, 20, 30], 'colB': [40, 50, 60], 'colC': [70, 80, 90]}
index_labels = ['row1', 'row2', 'row3']
df = pd.DataFrame(data, index=index_labels)
# Using loc to select by labels
val_loc = df.loc['row2', 'colB']
# Using iloc to select by positions
val_iloc = df.iloc[1, 1]
# Using loc to slice rows and columns by labels
slice_loc = df.loc['row1':'row2', 'colA':'colB']
# Using iloc to slice rows and columns by positions
slice_iloc = df.iloc[0:2, 0:2]
print('Value with loc:', val_loc)
print('Value with iloc:', val_iloc)
print('\nSlice with loc:')
print(slice_loc)
print('\nSlice with iloc:')
print(slice_iloc)
OutputSuccess
Important Notes
loc includes the last label in slices (end is inclusive).
iloc excludes the last position in slices (end is exclusive).
If your DataFrame index is numbers starting from 0, loc and iloc can give different results.
Summary
loc selects data by row and column labels.
iloc selects data by row and column positions (numbers starting at 0).
Use loc when you know the names, and iloc when you want to use positions.
Practice
(1/5)
1. What is the main difference between loc and iloc in pandas?
easy
A. loc uses labels, iloc uses integer positions
B. loc uses integer positions, iloc uses labels
C. loc selects columns only, iloc selects rows only
D. loc is faster than iloc
Solution
Step 1: Understand loc selection method
loc selects data by row and column labels, meaning it uses the actual names of rows and columns.
Step 2: Understand iloc selection method
iloc selects data by integer positions, starting from 0, ignoring labels.
Final Answer:
loc uses labels, iloc uses integer positions -> Option A
Quick Check:
loc = labels, iloc = positions [OK]
Hint: Remember: loc = labels, iloc = integer positions [OK]
Common Mistakes:
Confusing labels with positions
Thinking loc uses positions
Assuming iloc uses labels
2. Which of the following is the correct syntax to select rows with labels 'a' to 'c' and columns 'x' to 'z' using loc?
easy
A. df.loc['a':'c', 'x':'z']
B. df.iloc['a':'c', 'x':'z']
C. df.loc[0:2, 0:2]
D. df.iloc[0:2, 'x':'z']
Solution
Step 1: Identify loc syntax
loc uses labels, so slicing with labels like 'a':'c' and 'x':'z' is valid.
Step 2: Check other options
Selections using iloc with label slices are invalid because iloc requires integer positions. Using integer slices with loc is incorrect when the labels are strings like 'a', 'c', etc.
Final Answer:
df.loc['a':'c', 'x':'z'] -> Option A
Quick Check:
loc uses labels in slices [OK]
Hint: Use labels inside loc brackets, positions inside iloc [OK]
Common Mistakes:
Using integer positions with loc
Using labels with iloc
Mixing loc and iloc syntax
3. Given the DataFrame:
import pandas as pd
df = pd.DataFrame({'A':[10,20,30], 'B':[40,50,60]}, index=['x','y','z'])
What is the output of df.iloc[1, 0]?
medium
A. 30
B. 40
C. 50
D. 20
Solution
Step 1: Understand DataFrame structure
Rows are labeled 'x','y','z' with values in column 'A' as [10,20,30]. Positions start at 0, so row 1 is 'y', column 0 is 'A'.
Step 2: Apply iloc selection
df.iloc[1, 0] selects row at position 1 ('y') and column at position 0 ('A'), value is 20.
Final Answer:
20 -> Option D
Quick Check:
iloc uses positions: row 1, col 0 = 20 [OK]
Hint: iloc uses zero-based positions, count rows and columns from 0 [OK]
Common Mistakes:
Using labels instead of positions
Confusing row and column indices
Selecting wrong cell by mixing loc and iloc
4. Consider this code:
import pandas as pd
df = pd.DataFrame({'A':[1,2,3]}, index=[10,20,30])
print(df.loc[1])
What error will occur and why?
medium
A. No error, prints 2
B. KeyError because label 1 does not exist in index
C. IndexError because position 1 is out of range
D. TypeError because loc expects string labels
Solution
Step 1: Check DataFrame index labels
Index labels are [10, 20, 30], so label 1 is not present.
Step 2: Understand loc behavior
loc looks for label 1, which does not exist, causing a KeyError.
Final Answer:
KeyError because label 1 does not exist in index -> Option B
Quick Check:
loc needs existing labels, else KeyError [OK]
Hint: loc needs exact labels; missing label causes KeyError [OK]
Common Mistakes:
Thinking loc uses positions
Expecting no error when label missing
Confusing KeyError with IndexError
5. You have a DataFrame with non-numeric row labels: