Here's the problem, in order to make sure they had enough time and are still able to shop, the party has been splitting into groups of 1-3 and the last 3 sessions (3-5 hrs each) has just been the party members shopping and rping around town. I wouldn't mind this if they were in a group, but it has turned into a game of one at a time for up to half an hour and I can feel the other players getting bored.
Your problem is that your players collectively made a decision that might've made sense in character, but not in the context of the game being played.
Specifically, while the characters might save some time by splitting up, the players won't, since you still have only one DM and can thus manage only one group of characters at a time. Instead, it's just making the game more boring for the players who are not in the group that currently has your attention.
The solution, assuming that you want to stick to the face-to-face single-DM play format, is the same as it almost always is for group dynamics questions like this: talk with your players and let them know that, while splitting up could've been a reasonable in-character decision for the PCs, you can't actually DM more than one group at a time, and so it would be more fun for everyone if the characters just stayed together. If necessary, you may even want to explicitly promise that you won't punish the characters for such inefficient behavior, and will grant them extra time to get things done in a way that is more fun to play even if it's not perfectly optimal in-character.
(The term "my guy syndrome" might be sort of relevant here, although, as with any catchy term for a complex spectrum of social interactions, it should be taken with a reasonably sized grain of salt. There's a lot of different behaviors and motivations that could be lumped under a broadly defined term like "my guy syndrome", but the general aspect of players making decisions that lead to poor gameplay and lack of fun because "that's what their character would do" does seem to more or less fit.)
Note that there are ways in which you could change your game to try to let multiple separate groups play at the same time. For example, you could try to find someone to act as an assistant DM or, if your trust your players to handle it reasonably, even tell them to split into smaller groups like their characters did and run the game (mostly) DM-less until they meet up again (with the understanding that what they'll be doing is mostly stuff that won't really need DM adjudication). Or you could move the game temporarily online, where you can have multiple chat groups or email threads or whatever going on at the same time.
If you (and your players!) would prefer to focus their time on dungeon delving and other more "adventury" aspects of the game, you could even consider just handling things like shopping for gear in town as off-stage downtime activities, where the players describe what they want to accomplish during this visit to town, and if it seems reasonable, it just happens (or it happens, but needs some additional input from the players, like which of two available choices they prefer). If there's something that you feel should actually be played out, like a tense negotiation or a surprise fight, you can fast-forward to that part — and at least strongly hint that it would make sense for all of the party members to be present for it.
Whatever you decide to do, you will need to get your players to buy into it, especially the ones who are still waiting for "their turn at the RP." But in general, "this just isn't sustainable and it will drag the game on and on" is a pretty good argument. Do make sure to listen to your players, though: you might suggest skipping the boring social stuff and shopping and getting on with the dungeon delving, while your players might actually want more social stuff and city exploration. Which is fine, as long as you feel you can run it, but you can still suggest that your players should at least do it together as a group.