我正在尝试对表进行排序,但希望在排序时按名称排除给定列。换句话说,给定的列应该在排序之前保持原样。这旨在处理诸如“不知道”,“NA”等列。
我使用的API是唯一的和公司特定的,但它使用python。
此API中的表是一个对象,它是一个行列表,其中每一行是一个单元格列表,每个单元格都是一个单元格值列表。
我目前有一个工作函数可以对一个表进行排序,但我想编辑/修改它以按名称排除给定的列,但我很难找到方法。
仅供参考 - “矩阵”可以被视为表格本身。
def SortColumns(byRow=0, usingCellValue=0, descending=True):
"""
:param byRow: Use the values in this row to determine the sort order of the
columns.
:param usingCellValue: When there are multiple values within a cell use this
to control which value row within each cell is used for sorting
(zero-based)
:param descending: Determines the order in which the values should be
sorted.
"""
for A in range(0,Matrix.Count):
for B in range(0,Matrix.Count):
if(A==B):
continue; #do not compare rows against eachother
valA = Matrix[byRow][A][usingCellValue].NumericValue if Matrix[byRow][A].Count > usingCellValue else None;
valB = Matrix[byRow][B][usingCellValue].NumericValue if Matrix[byRow][B].Count > usingCellValue else None;
if(descending):
if valB < valA:
Matrix.SwitchColumns(A,B)
else:
if valA < valB:
Matrix.SwitchColumns(A,B)
我正在考虑添加一个新参数,该参数包含列名列表,并使用它来绕过这些列。
类似的东西:
def SortColumns(fixedcolumns, byRow=0,usingCellValue=0,descending=True):
答案 0 :(得分:0)
在遍历列时,您可以使用continue
语句跳过您不想移动的列。将这些条件放在两个循环的开头:
for A in range(0,Matrix.Count):
a_name = ??? #somehow get the name of column A
if a_name in fixedcolumns: continue
for B in range(0,Matrix.Count):
b_name = ??? #somehow get the name of column B
if b_name in fixedcolumns: continue
if(A==B):
continue