<p>不可预测的格式化<code>df</code>:</p>
<pre><code> First Name number last_name
0 Cthulhu 666 Smith
df = pd.DataFrame({'First Name': ['Cthulhu'], 'number': [666], 'last_name': ['Smith']})
</code></pre>
<p>这需要输入列名和顺序:<code>TemplateColumns = ['First Name', 'other', 'number']</code>。如果列不存在,则可以创建它们:</p>
<pre><code>for col in TemplateColumns:
if col not in df:
df[col] = np.nan
</code></pre>
<p>其中:</p>
<pre><code> First Name number last_name other
0 Cthulhu 666 Smith NaN
</code></pre>
<p>初始列的顺序需要与<code>TemplateColumns</code>相同,将剩余列保留在末尾,以获得<code>desired_df</code>:</p>
<pre><code> First Name other number last_name
0 Cthulhu NaN 666 Smith
desired_df = pd.DataFrame({'First Name': ['Cthulhu'], 'other': [np.nan], 'number': [666], 'last_name': ['Smith']})
</code></pre>
<p>对列进行重新排序是<a href="https://stackoverflow.com/questions/13148429/how-to-change-the-order-of-dataframe-columns">well explained in other posts</a>,但我不知道如何对前n列进行排序,并将其余列保留在末尾。我该怎么做</p>
<p>试试这个</p>
<pre><code>cols = TemplateColumns + df.columns.difference(TemplateColumns, sort=False).tolist()
df_final = df.reindex(cols, axis=1)
Out[714]:
First Name other number last_name
0 Cthulhu NaN 666 Smith
</code></pre>