According to the Chronicle, the deal is worth $4.175 million.
Carter, 28, can play both first base and left field. He hit .227 with 37 home runs and 88 RBI last season, including 20 home runs combined in July and August.
"I'm just happy to be an Astro and have this deal done so I can focus on the upcoming season and build off last year," Carter said.
The 28-year-old has spent the last two seasons in Houston after spending the first three of his career with the Oakland Athletics. In 2013 he hit .223 with 29 home runs and 82 RBI and led the league in strikeouts with 212.
- Molly Geary