Melt butter in a large saucepan over medium heat; cook and stir onion and carrot until onion is translucent, about 5 minutes. Stir in basmati rice and salt; cook and stir until rice is slightly opaque, about 3 minutes.
Pour in water; stir to combine. Mix in saffron threads, rose water, apricots, and almonds; bring to a boil. Reduce heat to low, cover, and simmer until rice has absorbed the liquid, about 20 minutes. Remove from heat and allow pilaf to stand covered for 10 more minutes. Stir before serving.