Pandas doesn't support this directly; it could, but the issue is how to specify that you want coordinates rather than different axes, e.g. df.iloc[[0,1],[0,1]]
means
give me the 0 and 1st rows and the 0 and 1st column.
That said, you can do this:
You updated the question and say you want to start with the index values
In [19]: row_indexer = df.index.get_indexer([Period('2011'),Period('2012')])
In [20]: col_indexer = df.columns.get_indexer([0,1])
In [21]: z = np.zeros(df.shape,dtype=bool)
In [22]: z[row_indexer,col_indexer] = True
In [23]: df.where(z)
Out[23]:
0 1 2
2011 0 NaN NaN
2012 NaN 4 NaN
2013 NaN NaN NaN
This seems easier though (these are the locations)
In [63]: df.values[[0,1],[0,1]]
Out[63]: array([0, 4])
Or this; as the Period index will be sliced correctly from the strings (don't use integers here)
In [26]: df.loc['2011',0]
Out[26]: 0
In [27]: df.loc['2012',1]
Out[27]: 4