Beispiel Eingabedatei,Die beste einzigartige Hit
name1 name1 100
name1 name2 99.4
name1 name3 67.8
name1 name4 40.2
name2 name2 100
name2 name1 98
Ich würde von der 1. Säule gerne 1) Gruppe 2) vergleichen Namen column1 und 2 und wenn es die gleichen, ignorieren 3) ist mit der der Linie gedruckt Höchster Wert. Also meine Ausgabe ist,
name1 name2 99.4
name2 name1 98
Mein Versuch, wenn ich Sortierung anstelle von Max meine besten Treffer verschwindet.
import csv
from itertools import groupby
from operator import itemgetter
with open('input.txt','rb') as f1:
with open('output.txt', 'wb') as f2:
reader = csv.reader(f1, delimiter='\t')
writer1 = csv.writer(f2, delimiter='\t')
for group, rows in groupby(reader, itemgetter(0)):
for line in rows:
if line[0] == line[1]:
continue
else:
best = max(rows, key=lambda r: (float(r[2])))
writer1.writerow(best)
Bitte erläutern Sie ein wenig mehr, warum Ihr aktueller Code nicht das Ergebnis liefert, das Sie erwarten. Was ist Ihre erwartete Leistung? – Guillaume
meine Ausgabe ist oben, es gibt mir einen Fehler oder max() arg leer seq-s, könnte ich zwei separate Skripte dazu schreiben..aber ich möchte 1 Skript für diese .. – user3224522