Ich habe einen Prozess, der während der Woche generierte Berichte sammelt und die Sammlung konsolidiert, um identische Berichte zu eliminieren.So finden Sie effizient identische Indizes in mehreren Datenrahmen
Ich habe eine Funktion geschrieben, die identische Berichte identifiziert, indem sie diejenigen findet, die identische Indizes haben, dann schließt sie alle außer einem von denen aus, die identisch sind und sich fortbewegen. Während es für 5000-10.000 Berichte gut funktioniert, dauert es sehr viel Zeit, um über 50.000 Berichte zu verarbeiten, die im Laufe der Zeit immer häufiger werden.
Es wäre nett, wenn ich die Berichte präventiv eliminieren könnte und so diesen Schritt vermeiden könnte, aber der Prozess der Generierung der Berichte lässt das nicht zu. Also, ich möchte einen Weg finden, um diese oder eine ähnliche Funktion effizienter zu machen.
Der Code ist unten, jede Hilfe und Ideen würden sehr geschätzt werden !!
def report_diff_index(self,dnc_data,folders):
master_report_dict, master_val_dict = self.report_orderer(folders)
sorts = self.report_sorter(dnc_data,master_report_dict)
keys = [k for k in sorts.keys()]
consolidated_sorts = keys
print('Original Report Size: ', len(consolidated_sorts))
for k in keys:
if k in consolidated_sorts:
for j in keys[keys.index(k)+1:]:
if j in consolidated_sorts:
if len(list(set(sorts[k].index).symmetric_difference(sorts[j].index))) == 0:
consolidated_sorts.remove(j)
print('Consolidated Report Size: ', len(consolidated_sorts))
consolidated_report = {}
consolidated_val = {}
for s in consolidated_sorts:
consolidated_report[s] = master_report_dict[s]
consolidated_val[s] = master_val_dict[s]
return consolidated_report, consolidated_val
Danke! Kannst du einen Pandas-Dataframe-Index als Diktatschlüssel verwenden? Ich werde es ausprobieren .. – Dorian821
Sie können es nicht direkt verwenden, aber alle unveränderlichen, d. H. Hashable, Daten können als Schlüssel verwendet werden. 'set's und' list's sind veränderbar, also nicht verwendbar als dict 'key's aber' frozenset' und 'tuple's sind unveränderlich und können somit verwendet werden. Wenn Sie Ihre Indizes in eingefrorene Mengen umwandeln, können Sie sie als Schlüssel verwenden. – JohanL
@ Dorian821 Hast du das zur Arbeit gebracht? – JohanL