You can iterate using a reader, which is obtained by specifying a chunksize in the call to read_csv().
Here I use CSV data in memory and read two rows at once.
Replace StringIO(s) by your file, and use a chunsize of 1 if you want to read a single row at once:
import pandas as pd
from numpy import random as npr, round
from io import StringIO
# Some CSV data to read, in a string
s = pd.DataFrame(round(npr.randn(10, 4), 2)).to_csv()
# Use the reader in a with/as structure
with pd.read_csv(StringIO(s),index_col=0, chunksize=2) as reader:
for i, chunk in enumerate(reader):
print(f'\nChunk {i:}')
print(chunk)
Chunk 0
0 1 2 3
0 -1.50 -1.78 -0.53 1.09
1 -0.35 -0.79 0.20 1.08
Chunk 1
0 1 2 3
2 -1.44 -1.21 -0.79 1.09
3 0.23 2.13 0.94 -0.04
Chunk 2
[...]