回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我想根据每个列表的第一个值按自定义顺序对列表进行排序。列表列表是pivot表dataframe(<code>cols = list(dfOverview.columns.values)</code>)的我的列,其中一些列本身就是一个列表。你知道吗</p>
<p>最简单的工作示例(我希望以<code>b</code>开头的列移到<code>c</code>之前):</p>
<pre><code>cols = ['2016', '2017', '2018',
('a', '2016'),
('a', '2017'),
('a', '2018'),
('c', '2016'),
('c', '2017'),
('c', '2018'),
('b', '2016'),
('b', '2017')]
sortOrder = {'2016': 0, '2017': 1, '2018': 2, 'a': 3, 'b': 4, 'c': 5}
cols.sort(key=lambda val: sortOrder[val[0]])
</code></pre>
<p>这返回了一个错误,即使我尝试了很多,google搜索了很多,我也找不到一个方法让它工作。cols的预期结果:</p>
<pre><code>['2016', '2017', '2018',
('a', '2016'),
('a', '2017'),
('a', '2018'),
('b', '2016'),
('b', '2017'),
('c', '2016'),
('c', '2017'),
('c', '2018')]
</code></pre>
<p>为了澄清我的问题的一些背景:我对一个pandas数据框进行了透视,得到了一个新的数据框,其中的列可以由一系列值组成(以多列作为参数的透视表)。这使得订购变得困难,因此出现了上述问题。你知道吗</p>
<p>我的数据帧是以下函数的结果:</p>
<pre><code>dfPivot = df.pivot_table(index=['col1', 'col2'],
columns=['year','category'],
values='price')
</code></pre>