ENH: Construct pandas dataframe from function
It would be great if we could construct a `pd.DataFrame` from a function.

#### Describe the solution you'd like

```python
import pandas as pd
import numpy as np

def my_random():
    return np.random.rand() + 1

df = pd.DataFrame(my_random, index=range(10), columns=range(15))
```

The output would be equivalent to

```python
col_len = 10
index_len = 15
data = np.array([[my_random() for i in range(col_len)] for j in range(index_len)])
df = pd.DataFrame(data, index=range(index_len), columns=range(columns_len))
```

Alternatively, we could do the same with something like

```python
df = pd.DataFrame.from_function(my_random, *args, **kwargs)
```

`args` and `kwargs` are passed to the df constructor.

## EDIT
I just realized I can easily obtain what I want with

```python
df = pd.DataFrame(index=range(10), columns=range(15)).applymap(
    lambda x: my_random()
)
```

It's quite compact and easy to read. It's slowish but I don't expect it to be used in high performance tasks.