Castro left Tuesday night's 7-1 win over Milwaukee after getting hurt on a first-inning slide into home plate. Tests showed he sustained a high ankle sprain.
Castro, a three-time All-Star, was holding out hope that he could beat the four-week prognosis to return. But general manager Jed Hoyer said Wednesday the organization will move forward as though Castro had played his final game this season.
Cubs rookie Javier Baez, a natural shortstop, will shift over from second base and take Castro's place in the field.
''He's certainly going to work hard to come back,'' Hoyer said. ''His mentality right now is that he can beat four weeks and come back, and we're not going to defeat that.
Castro was unavailable for comment before Wednesday night's game against the Brewers.
''If he does surprise us and comes back a little early, we wouldn't be against having him play again, because that would send him off into the offseason on a good note,'' Hoyer said.
Castro has 14 home runs, 65 RBIs and a team-high .292 batting average in 134 games this season.
Chicago, last in the NL Central, also is without All-Star first baseman Anthony Rizzo, who could miss the rest of the season with a strained lower back.
Rizzo was hurt on Aug. 26 and has been out of the lineup since. He was hitting .278 with 30 home runs and 71 RBIs.
In other news, the Cubs selected the contract of outfielder Ryan Kalish from Triple-A Iowa and transferred outfielder Ryan Sweeney (strained left hamstring) to the 60-day disabled list.
The move effectively ends the season for Sweeney as well. He was injured running out a grounder against Cincinnati on Aug. 26.
Sweeney batted .251 with three homers in 77 games for the Cubs this season.
The 26-year-old Kalish was on Chicago's opening-day roster and batted .242 in 39 games before being optioned to Iowa on May 26. He hit .251 with eight home runs and 37 RBIs during the remainder of the Triple-A season.