如果我的制表符分隔文件是:
a b 77.8
a d 77.8
e f 56.7
e r 40.0
我想在第[0]行打印一个元素,在第[2]行打印最大值,但是当值相同时,要打印这两个元素,如何修改下面的代码?你知道吗
import csv
from itertools import groupby
from operator import itemgetter
with open('input.txt,'rb') as f1:
with open('out.txt','wb') as f2:
reader = csv.reader(f1, delimiter='\t')
writer1 = csv.writer(f2, delimiter='\t')
for group, rows in groupby(filter(lambda x: x[0]!=x[1], reader), key=itemgetter(0)):
best = max(rows, key=lambda r: (float(r[2])))
writer1.writerow(best)
所以,我的输出应该是这样的:
a b 77.8
a d 77.8
e f 56.7
不必从
rows
写入max项,您可以按第三个值按降序对行进行排序,按第三个值对行进行分组,然后将项写入第一个组:输出在
out.txt
:另一种使用
pandas
(读取和写入文件更好)的方法:输出:
相关问题 更多 >
编程相关推荐