First, you don't need your delay in a loop. I'd move it out of the loop directly under the trigger (if you need it at all)
I'm assuming your loops are all taking the attachments array from the email as their input, if this is the case you don't need multiple loops, put everything inside one loop and delete the others.
Again, assuming your loop is based on the attachments array on the email, the reason it contains more than one iteration and creates more than one row in your sheet is most likely because your email actually has additional attachments. Frequently, an image that is embedded in the email has an associated hidden attachment.
E.g. this email I sent myself from gmail has an embeded picture and a pdf attachment. Only the PDF shows as an attachment in Outlook.

But if I look at the output of the "when a new email arrives (v3)" in the flow run, I see two attachments.
The "hidden" attachment is for the image file, and its "isInline" property is set to "true" because it's in the message body.
Check your flows trigger outputs on recent runs. If the additional attachment(s) are image files, I'm not sure why your Extract isn't failing. Perhaps it's just returning nulls, blanks or junk data for the second attachment?
The solution would be to filter your attachments from the email so that you're only running the PDFs.
You could do this with a condition in your loop.