I think you're going to be much better off getting this into one DataFrame, so consider using a MultiIndex. Here's a toy example, which I think will translate well to your code:
In [11]: dfN13 = pd.DataFrame([[1, 2]], columns=[['N13', 'N13'], ['a', 'b']])
In [12]: dfM13 = pd.DataFrame([[3, 4]], columns=[['M13', 'M13'], ['a', 'b']])
These are the DataFrames in your example, but the column's first level it just the asset name.
In [13]: df = pd.concat([dfN13, dfM13], axis=1)
In [14]: df
Out[14]:
N13 M13
a b a b
0 1 2 3 4
For convenience we can label the columns-levels and index.
In [15]: df.columns.names = ['asset', 'chart']
In [16]: df.index.names = ['date'] # well, not in this toy example
In [17]: df
Out[17]:
asset N13 M13
chart a b a b
date
0 1 2 3 4
Note: This looks quite like your spreadsheet.
And we can grab out a specific chart (e.g. ohlc) using xs
:
In [18]: df.xs('a', level='chart', axis=1)
Out[18]:
asset N13 M13
date
0 1 3
In [19]: df.xs('a', level='chart', axis=1).plot() # win