Vectorization can be applied to DataFrames. Many NumPy ufuncs, such as square root or sqrt, will work as expected when given a DataFrame; in fact, they may still return a DataFrame when given a DataFrame. That said, this cannot be guaranteed, especially when using a custom ufunc created with vectorize. They may instead return an ndarray in such a situation. While these methods work on DataFrames with common data types, it cannot be guaranteed that they will work on all DataFrames.