I want to turn a DataFrame (or a numpy array):

```
df1:
    0   1   2
0   1.  5.  9.
1   2.  6.  10.
2   3.  7.  11.
3   4.  8.  12.

```

into a DataFrame like this:

```
df1
    0     1     2     3     4     5     6
0   NaN   NaN   NaN   NaN   NaN   NaN   NaN
1   NaN   1.    NaN   5.    NaN   9.    NaN
2   NaN   NaN   NaN   NaN   NaN   NaN   NaN
3   NaN   2.    NaN   6.    NaN   10.   NaN
4   NaN   NaN   NaN   NaN   NaN   NaN   NaN
5   NaN   3.    NaN   7.    NaN   11.   NaN
6   NaN   NaN   NaN   NaN   NaN   NaN   NaN
7   NaN   4.    NaN   8.    NaN   12.   NaN
8   NaN   NaN   NaN   NaN   NaN   NaN   NaN

```

, i.e., I want to insert NaN rows and columns on df1 (as many as I want)
Could you make this work even for a large DataFrame, where you cannot do this manually?

So far, I have this:

```
import numpy as np
import pandas as pd

p = np.arange(1,13).reshape(4,3)
p1 = pd.DataFrame(p)  
#Add a row of NaN's on p1
p1.index = range(1, 2*len(p1)+1, 2)
p1 = p1.reindex(index=range(2*len(p1)))

#Repeat for rows...I know its a lil bit st*pid
p1 = pd.DataFrame(p1)  
p1.index = range(1, 2*len(p1)+1, 2)
p1 = p1.reindex(index=range(2*len(p1)))
#etc...
p1 = pd.DataFrame(p1)  
p1.index = range(1, 2*len(p1)+1, 2)
p1 = p1.reindex(index=range(2*len(p1)))

```

It seems to work, but only for rows until now...
[e.g., see this](https://i.stack.imgur.com/agIxd.png)