所以我有一个excel电子表格,其中包含我想要对电子表格进行排序的特定列。该列有3种不同的起始字母组合,B,C,E。我想按B然后按E排序,然后是以C开头的所有行。我需要从列中对整个表进行排序
任何人都知道如何在Python中执行此操作?
答案 0 :(得分:1)
将您的工作表读入行lst
列表,特定列的列索引为index
。
import xlrd
wb = xlrd.open_workbook('myworkbook.xls')
sh = wb.sheet_by_index(0)
lst = [sh.row(n) for n in xrange(sh.nrows)]
searchdict = dict(B=1, E=2, C=3)
lst.sort(key=lambda row: searchdict.get(row[index][0], 4))
最后一行中的[0]
访问您字段的第一个字符,然后在字典中查找。 dict.get
参数中的默认值4将所有非拟合行放在新列表的末尾。没有经过详细测试,但应该让你明白。
答案 1 :(得分:0)
您可以使用how to sort xls file column wise and write it to another file with entire row using python?
之类的内容在你的排序功能(键)中,我会做这样的事情(没有测试,添加错误检查)进行比较。如果你想实现__gt__和__lt__那么它们与>基本相同切换到<
order = ['B','E','C'] #Set the order for the first letter here
def gt( a, b ):
if a[0] == b[0]:
return a > b #Same letter, use normal sorting
else:
return order.index(a[0]) > order.index(b[0]) #Sort using first letter
注意:如果您的问题不是要求排序通过第一个字母,那么请使用其他答案。