<p dir="auto">The <code class="notranslate">DataFrame</code> constructor supports numpy's ndarray of primitive type, recarray (or structured array) or a masked array of simple type. It breaks when given a masked recarray:</p>
<div class="highlight highlight-source-python notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="&gt;&gt;&gt; a = np.ma.mrecords.fromrecords([(1,2)], names=['a', 'b'], mask=False)
&gt;&gt;&gt; pandas.DataFrame(a)
...
TypeError: cannot perform reduce with flexible type"><pre class="notranslate"><span class="pl-c1">&gt;&gt;</span><span class="pl-c1">&gt;</span> <span class="pl-s1">a</span> <span class="pl-c1">=</span> <span class="pl-s1">np</span>.<span class="pl-s1">ma</span>.<span class="pl-s1">mrecords</span>.<span class="pl-en">fromrecords</span>([(<span class="pl-c1">1</span>,<span class="pl-c1">2</span>)], <span class="pl-s1">names</span><span class="pl-c1">=</span>[<span class="pl-s">'a'</span>, <span class="pl-s">'b'</span>], <span class="pl-s1">mask</span><span class="pl-c1">=</span><span class="pl-c1">False</span>)
<span class="pl-c1">&gt;&gt;</span><span class="pl-c1">&gt;</span> <span class="pl-s1">pandas</span>.<span class="pl-v">DataFrame</span>(<span class="pl-s1">a</span>)
...
<span class="pl-v">TypeError</span>: <span class="pl-s1">cannot</span> <span class="pl-s1">perform</span> <span class="pl-s1">reduce</span> <span class="pl-k">with</span> <span class="pl-s1">flexible</span> <span class="pl-s1">type</span></pre></div>
<p dir="auto">Tested at latest public release and HEAD.</p>
<p dir="auto">as it stands</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="In [24]: tuples = [(randint(10), randint(10)) for _ in range(10)]

In [25]: mi = MultiIndex.from_tuples(tuples)

In [26]: df = DataFrame(index=mi, columns=mi)"><pre class="notranslate"><code class="notranslate">In [24]: tuples = [(randint(10), randint(10)) for _ in range(10)]

In [25]: mi = MultiIndex.from_tuples(tuples)

In [26]: df = DataFrame(index=mi, columns=mi)
</code></pre></div>
<p dir="auto">fails, whereas single level indexes work fine</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="In [27]: df = DataFrame(index=range(10), columns=range(10))

In [28]: df
Out[28]:
     0    1    2    3    4    5    6    7    8    9
0  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
1  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
2  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
3  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
4  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
5  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
6  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
7  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
8  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
9  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN"><pre class="notranslate"><code class="notranslate">In [27]: df = DataFrame(index=range(10), columns=range(10))

In [28]: df
Out[28]:
     0    1    2    3    4    5    6    7    8    9
0  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
1  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
2  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
3  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
4  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
5  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
6  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
7  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
8  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
9  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
</code></pre></div>