Python2D列表按列头排序
我有一个2d列表:Python2D列表按列头排序,python,list,sorting,2d,Python,List,Sorting,2d,我有一个2d列表: ['C', 'A', 'D', 'B'], #header row ['F', 'C', 'F', 'E'], #row 1 ['F', 'E', 'F', 'F'], #row 2 ['B', 'A', 'F', 'A'], ['A', 'F', 'C', 'E'], ['F', 'F', 'E', 'E'], ['C', 'E', 'F', 'C'] 列表中的第一行是标题行:C、A、D、B。 如何更改此选项,使列按顺序排列,以便显示: ['A', 'B', 'C', '
['C', 'A', 'D', 'B'], #header row
['F', 'C', 'F', 'E'], #row 1
['F', 'E', 'F', 'F'], #row 2
['B', 'A', 'F', 'A'],
['A', 'F', 'C', 'E'],
['F', 'F', 'E', 'E'],
['C', 'E', 'F', 'C']
列表中的第一行是标题行:C、A、D、B。
如何更改此选项,使列按顺序排列,以便显示:
['A', 'B', 'C', 'D'], #header row
['C', 'E', 'F', 'F'], #row 1
['E', 'F', 'F', 'F'], #row 2
['A', 'A', 'B', 'F'],
['F', 'E', 'A', 'C'],
['F', 'E', 'F', 'E'],
['E', 'C', 'C', 'F']
我希望标题的顺序是A、B、C、D,但也可以将标题下的列移动到您可以使用
排序的和zip
,首先使用zip(*A)
创建列列表,然后使用排序的对其排序(基于第一个索引),然后再次使用zip
转换为第一个状态,并使用map
将索引转换为列表:
>>> map(list,zip(*sorted(zip(*a))))
[['A', 'B', 'C', 'D'],
['C', 'E', 'F', 'F'],
['E', 'F', 'F', 'F'],
['A', 'A', 'B', 'F'],
['F', 'E', 'A', 'C'],
['F', 'E', 'F', 'E'],
['E', 'C', 'C', 'F']]
你可以用numpy
>>> import numpy as np
>>> data = np.array([['C', 'A', 'D', 'B'], #header row
... ['F', 'C', 'F', 'E'], #row 1
... ['F', 'E', 'F', 'F'], #row 2
... ['B', 'A', 'F', 'A'],
... ['A', 'F', 'C', 'E'],
... ['F', 'F', 'E', 'E'],
... ['C', 'E', 'F', 'C']])
>>> data[:,np.argsort(data[0])] # select sorted indices of first row as column indices.
array([['A', 'B', 'C', 'D'],
['C', 'E', 'F', 'F'],
['E', 'F', 'F', 'F'],
['A', 'A', 'B', 'F'],
['F', 'E', 'A', 'C'],
['F', 'E', 'F', 'E'],
['E', 'C', 'C', 'F']],
dtype='|S1')
使用zip
转换数据,对转换列表的第一项进行排序
,将其转换回原始格式。请张贴您正在处理的代码。