分组后取最大值对应记录
创始人
2024-02-14 06:02:04

【问题】

I have an input file,

1A	Traes_1AS_6052071D9.1	99.01	101	99.0 
1A	Traes_1DS_6BA87D1DA.1	96.04	101	99.0 
1A	Traes_1BS_480915AD0.1	94.06	101	99.0 
1B	Traes_1AS_49D585BA6.2	99.01	101	72.0 
1B	Traes_1BS_47F027BBE.2	98.02	101	89.0 
1B	Traes_1DS_3F816B920.1	97.03	101	92.0 
1C	Traes_1AS_3451447E0.1	99.01	101	97.0
1C	Traes_1BS_9F243CEA6.2	92.93	99	97.0 
1C	Traes_1DS_2A6443F45.1	89.90	99	97.0 

I need to

1.     group and iterate inside each line[0],

2.     sort line[4] from lowest to highest value and take the highest value

3.     if they are similar, print the results choosing the one that has highest value in line[2], so that my output file looks like this:

Required output:

1A  Traes_1AS_6052071D9.1   99.01   101 99.0    
1B  Traes_1DS_3F816B920.1   97.03   101 92.0    
1C  Traes_1AS_3451447E0.1   99.01   101 97.0    

This is my try, but it only takes according to the highest line[4]:

import csv
from itertools import groupby
from operator import itemgetter
with open('my_file','rb') as f1:
with open('out_file', 'wb') as f2:reader = csv.reader(f1, delimiter='\t')writer1 = csv.writer(f2, delimiter='\t')for group, rows in groupby(reader, itemgetter(0)):seen = set()rows = sorted(rows, key=lambda r: float(r[4]))for row in rows:max(rows, key=lambda r: float(r[4]))writer1.writerow(row)

别人的回答:

Just have the key function for max return a tuple of (r[4], r[2])

Slightly simplified example (without output file)

with open('data.txt','rb') as f1:reader = csv.reader(f1, delimiter='\t')for group, rows in groupby(reader, itemgetter(0)):best = max(rows, key=lambda r: (float(r[4]), float(r[2])))print best

【回答】

建议用SPL来做,只要一句:

A
1=file("e:\\data.txt").import().group(#1).(~.maxp([#5,#3]))

A1:#1表示第1列,~表示按#1分组后的每组数据,maxp返回字段求最大值对应的记录。

 

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...