python多列排序_按多列排序数据

在python中可以很容易地做到这一点。首先,您需要以正确的格式读取数据:def line_to_tuple(line):

data = line.split()

return (data[0],int(data[1]),int(data[2]))

这将把每一行变成一个元组,它将按字典顺序排序。因为您的字符串(第一列)是以一种容易排序的方式设置的,所以我们不需要担心它们。第二列和第三列只需转换为整数,使它们正确排序。在

^{pr2}$

下面是另一个在字段之间保留空白行的实现:import itertools

def field1(line):

data = line.split()

try:

return data[0]

except IndexError:

return None

def fields(line):

data = line.split()

return data[0],int(data[1]),int(data[2])

with open('test.dat') as fin, open('output.dat','w') as fout:

for k,v in itertools.groupby(fin,key=field1):

if k is None:

fout.write('\n')

else:

fout.writelines(sorted(v,key=fields))

它使用itertools基于空行对文件进行分块,并在写回之前对这些组进行单独排序。在

输出如下:temp $ cat output.dat

PITG_00129 606 1436

PITG_00130 1 987

PITG_00132 2 1321

PITG_00133 1 2946

PITG_00133 4081 4515

PITG_00133 4464 11708

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值