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
 
     
     
    
 
     
    