Pet.cshtml should have a model type of Pet, because you are only dealing with a single pet here.
DisplayTemplates automatically enumerate over a collection, and call your DisplayTemplate with a single item. That's one of their benefits. You don't need to do any enumeration.
Just change Pet.cshtml's type to Pet
I also suspect you don't want to have a separate table for each pet. So what you want is to create the table and header In your partial view, then only have a single data row in Pet.cshtml, because Pet.cshtml will be called multiple times, once for each row.
PetTablePartial.cshtml:
@model IEnumerable<Pet>
<table>
<tr>
<th> Pet Name </th>
</tr>
@Html.DisplayForModel()
</table>
~/Shared/DisplayTemplates/Pet.cshtml:
@model Pet
<tr>
<td>@Html.DisplayFor(x => x.Name)</td>
</tr>