Currently, a ValueError is raised when issues with the primary key are encountered. These issues are:
- the primary key property not holding for the data
- the specified columns not being present
- an empty primary key being provided
- no primary key at all.
A dedicated PrimaryKeyError would allow catching these issues specifically, instead of relying on the broad ValueError.