<div class="highlight highlight-source-python notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="&gt;&gt;&gt; import pandas as pd
&gt;&gt;&gt; from collections import OrderedDict
&gt;&gt;&gt; od = [OrderedDict([('z', 0), ('a', 1), ('*', 2)])]
&gt;&gt;&gt; pd.DataFrame(od)
   *  a  z
0  2  1  0
&gt;&gt;&gt; pd.DataFrame.from_dict(od)
   *  a  z
0  2  1  0"><pre class="notranslate"><span class="pl-c1">&gt;&gt;</span><span class="pl-c1">&gt;</span> <span class="pl-k">import</span> <span class="pl-s1">pandas</span> <span class="pl-k">as</span> <span class="pl-s1">pd</span>
<span class="pl-c1">&gt;&gt;</span><span class="pl-c1">&gt;</span> <span class="pl-k">from</span> <span class="pl-s1">collections</span> <span class="pl-k">import</span> <span class="pl-v">OrderedDict</span>
<span class="pl-c1">&gt;&gt;</span><span class="pl-c1">&gt;</span> <span class="pl-s1">od</span> <span class="pl-c1">=</span> [<span class="pl-v">OrderedDict</span>([(<span class="pl-s">'z'</span>, <span class="pl-c1">0</span>), (<span class="pl-s">'a'</span>, <span class="pl-c1">1</span>), (<span class="pl-s">'*'</span>, <span class="pl-c1">2</span>)])]
<span class="pl-c1">&gt;&gt;</span><span class="pl-c1">&gt;</span> <span class="pl-s1">pd</span>.<span class="pl-v">DataFrame</span>(<span class="pl-s1">od</span>)
   <span class="pl-c1">*</span>  <span class="pl-s1">a</span>  <span class="pl-s1">z</span>
<span class="pl-c1">0</span>  <span class="pl-c1">2</span>  <span class="pl-c1">1</span>  <span class="pl-c1">0</span>
<span class="pl-c1">&gt;&gt;</span><span class="pl-c1">&gt;</span> <span class="pl-s1">pd</span>.<span class="pl-v">DataFrame</span>.<span class="pl-en">from_dict</span>(<span class="pl-s1">od</span>)
   <span class="pl-c1">*</span>  <span class="pl-s1">a</span>  <span class="pl-s1">z</span>
<span class="pl-c1">0</span>  <span class="pl-c1">2</span>  <span class="pl-c1">1</span>  <span class="pl-c1">0</span></pre></div>
<p dir="auto">If OrderedDicts are used, I would expect the column order of the first OrderDict that is encountered to be preserved, as the following:</p>
<div class="highlight highlight-source-python notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="&gt;&gt;&gt; pd.DataFrame(od, columns=od[0].keys())
   z  a  *
0  0  1  2
&gt;&gt;&gt;"><pre class="notranslate"><span class="pl-c1">&gt;&gt;</span><span class="pl-c1">&gt;</span> <span class="pl-s1">pd</span>.<span class="pl-v">DataFrame</span>(<span class="pl-s1">od</span>, <span class="pl-s1">columns</span><span class="pl-c1">=</span><span class="pl-s1">od</span>[<span class="pl-c1">0</span>].<span class="pl-en">keys</span>())
   <span class="pl-s1">z</span>  <span class="pl-s1">a</span>  <span class="pl-c1">*</span>
<span class="pl-c1">0</span>  <span class="pl-c1">0</span>  <span class="pl-c1">1</span>  <span class="pl-c1">2</span>
<span class="pl-c1">&gt;&gt;</span><span class="pl-c1">&gt;</span></pre></div>
<p dir="auto">If different orders occur in the list, the earlier would overwrite the later. If new columns are introduced with subsequent list entries, I would expect all new columns to be appended to the original columns, with their relative order preserved.</p>
<h4 dir="auto">Code Sample, a copy-pastable example if possible</h4>
<div class="highlight highlight-source-python notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="# Your code here
"><pre class="notranslate"><span class="pl-c"># Your code here</span></pre></div>
<h4 dir="auto">Problem description</h4>
<p dir="auto">[this should explain <strong>why</strong> the current behaviour is a problem and why the expected output is a better solution.]</p>
<p dir="auto"><strong>Note</strong>: We receive a lot of issues on our GitHub tracker, so it is very possible that your issue has been posted before. Please check first before submitting so that we do not have to handle and close duplicates!</p>
<p dir="auto"><strong>Note</strong>: Many problems can be resolved by simply upgrading <code class="notranslate">pandas</code> to the latest version. Before submitting, please check if that solution works for you. If possible, you may want to check if <code class="notranslate">master</code> addresses this issue, but that is not necessary.</p>
<p dir="auto">For documentation-related issues, you can check the latest versions of the docs on <code class="notranslate">master</code> here:</p>
<p dir="auto"><a href="https://pandas-docs.github.io/pandas-docs-travis/" rel="nofollow">https://pandas-docs.github.io/pandas-docs-travis/</a></p>
<p dir="auto">If the issue has not been resolved there, go ahead and file it in the issue tracker.</p>
<h4 dir="auto">Expected Output</h4>
<h4 dir="auto">Output of <code class="notranslate">pd.show_versions()</code></h4>
<details>
<p dir="auto">[paste the output of <code class="notranslate">pd.show_versions()</code> here below this line]</p>
</details>