Software Defined Networking (SDN) and Network Function Virtualization (NFV) are the latest promising technologies introduced with the goal of making networks more flexible, controllable, cost-efficient and innovative. These technologies are recognized as building blocks for the future Internet. Through the use of NFV, network functions are virtualized and made hardware-independent thus enabling faster innovations and developments. These virtualized functions such as network address translator, firewall, deep packet inspection etc. can reside on general-purpose servers in the SDN architecture. The necessity of achieving different operational objectives such as minimizing latency, network load, cost, and energy consumption makes determining the deployment locations of these functions an important research challenge. This problem is commonly known as the "Virtual Network Function (VNF) Placement Problem". This paper presents a detailed survey of recent research in the VNF Placement area. A novel thematic taxonomy of current solutions is provided based on the parameters derived from the literature. State-of-the-art studies are categorized and reviewed based upon the developed taxonomy. The common aspects and differences among existing solutions are highlighted through the parameters in the taxonomy. Finally, open research challenges and emerging trends are outlined and discussed for further studies.