<p>您可以编写自己的函数来实现这一点。基本上,您可以使用<code>.reindex()</code>对数据帧进行重新排序,同时如果不存在空列,则可以包括空列。剩下要解决的唯一问题是如何将<code>TemplateColumns</code>中没有的其余列添加到数据帧中。您可以通过从<code>TemplateColumns</code>获取列索引的集合差,然后在调用<code>.reindex</code>之前更新顺序来完成此操作</p>
<p>建立数据仓库;作用</p>
<pre><code>def reordered(df, new_order, include_remaining=True):
cols_to_end = []
if include_remaining:
# gets the items in `df.columns` that are NOT in `new_order`
cols_to_end = df.columns.difference(new_order, sort=False)
# Ensures that the new_order items are first
final_order = new_order + list(cols_to_end)
return df.reindex(columns=final_order)
df = pd.DataFrame({'First Name': ['Cthulhu'], 'number': [666], 'last_name': ['Smith']})
new_order = ['First Name', 'other', 'number']
</code></pre>
<p>与<code>include_remaining</code>一起:</p>
<pre><code>out = reordered(df, new_order, include_remaining=True)
print(out)
First Name other number last_name
0 Cthulhu NaN 666 Smith
</code></pre>
<p>没有<code>include_remaining</code>:</p>
<pre><code>out = reordered(df, new_order, include_remaining=False)
print(out)
First Name other number
0 Cthulhu NaN 666
</code></pre>