The first and foremost issue stability. Port 25 is SMTP. Port 70 is gopher. Port 80 is http. And so on. These are established, known and assigned numbers. They have meaning between systems that are dissimilar.
The port number needs to be stable. You can't always run the mail process as process 25. You've got no guarantee about what order it launches in and in the event you have to kill and restart it, you have no guarantee on what process ID it would be.
Next off, consider that not all systems that have ports have processes (or processes that have a number). Consider a hypothetical web server appliance. You stick a USB drive in it, it serves files from it. That's it. One process, that just keeps serving files - would that be port 1? or would it need to be assigned some number that has meaning to others? Or my ancient Macintosh Plus that ran system 6 and had a web server. No numbers. So you need some other way to designate the port that a given bit of code is listening to.
There are applications that have multiple numbers. That web server not only listens on port 80, but 443 and maybe 8080 (not to mention the "this machine has multiple IP addresses, this process running on the machine listens to 80 on this, and 80 and 443 on that one, and 8080 on this other one"). If the system was bound to a process id it couldn't listen to different ports for different protocols.
By having assigned numbers, there is consistency across the network. Telnet is port 23. That telnet program opens up a connection to port 23 and knows what protocol is associated with what listens there. FTP listens uses ports 20 and 21 for different parts of its protocol - again, consistency. Having a consistent set of rules, numbers, and protocols is what makes the internet go 'round.