Copenhagen had placed the battalion on alert after Russia’s invasion of Ukraine and amid rising tensions between the West and Moscow.
Denmark has already sent land and air reinforcements to the Baltic states and Poland.
On Tuesday, the Danish government said it was ready to send 800 soldiers to the Baltics if Nato requested them.
“We have now received a formal request from Nato to place the battalion in Latvia,” Frederiksen said during a visit to the Baltic nation on Thursday.
The troops are due to arrive in May, the Danish military said.
Nato has sent a large number of troops to the alliance’s eastern flank with reinforcements in Bulgaria, Estonia, Hungary, Latvia, Lithuania, Poland, Romania and Slovakia.
Some 100,000 US troops are now present in Europe, more than 40,000 of them under direct Nato command in eastern Europe.
Denmark sent fighter jets to Lithuania before the invasion of Ukraine, and in early March it sent 200 troops to Estonia, two fighter jets to Poland and a frigate to the eastern waters of the Baltic Sea.