Piscotty's new deal runs through the 2022 season and includes an option for 2023.
According to FanRag Sports, the deal will pay Piscotty $33.5 million.
Piscotty, 26, batted .273 last year with 22 home runs and 85 RBIs. He was 1-for-3 in the Cardinals' season-opening win over the Cubs on Sunday.
"I couldn't ask for a better group of guys to go into battle with. I'm surrounded by winners, competitors and outright studs," Piscotty told reporters. "This team this year is special, and I think everyone got a glimpse of that last night. Look out for this team this year."
Piscotty's extension is further proof that the Cardinals' front office is pleased with an emerging core of young players.
Since the spring of 2014, the team has worked out long-term extensions with Matt Carpenter, Kolten Wong, Carlos Martinez and now Piscotty. At the time they signed their deals, each of those players was four or more years from reaching free agency.
"We have made it a point to lock up our talented young players," general manager John Mozeliak said at the news conference, addressing Piscotty. "I think we're all grateful for where we are today. I look forward to having you for many years."
Piscotty has just one year and 76 days of service time, meaning he wouldn't have been eligible for arbitration until the completion of the 2018 season and wouldn't have been a free agent until after the 2021 season. He entered the 2017 season playing on a $560,400 contract.
The Cardinals have long viewed Piscotty as a future No. 3 or 4 hitter. They picked him with the No. 36 overall selection of the 2012 draft out of Stanford, and he batted .282 with an .815 OPS and 29 home runs through his first 216 major league games. He also has become an above-average defender and baserunner.
ESPN's Mark Saxon contributed to this report.