Heim > Web-Frontend > js-Tutorial > Wie kann die „groupby'-Methode von Python Daten aus Arrays von Objekten effizient gruppieren und aggregieren?

Wie kann die „groupby'-Methode von Python Daten aus Arrays von Objekten effizient gruppieren und aggregieren?

Susan Sarandon
Freigeben: 2024-12-22 20:55:11
Original
938 Leute haben es durchsucht

How can Python's `groupby` method efficiently group and aggregate data from arrays of objects?

Gruppieren von Objekten in Arrays mithilfe der GroupBy-Methode

Pythons leistungsstarke Groupby-Methode ermöglicht eine effiziente Gruppierung von Objekten basierend auf ausgewählten Attributen. Wenn Sie solche Gruppierungsvorgänge durchführen müssen, bietet Groupby eine praktische Lösung.

Betrachten Sie beispielsweise die folgende Anordnung von Objekten:

[ 
    { Phase: "Phase 1", Step: "Step 1", Task: "Task 1", Value: "5" },
    { Phase: "Phase 1", Step: "Step 1", Task: "Task 2", Value: "10" },
    { Phase: "Phase 1", Step: "Step 2", Task: "Task 1", Value: "15" },
    { Phase: "Phase 1", Step: "Step 2", Task: "Task 2", Value: "20" },
    { Phase: "Phase 2", Step: "Step 1", Task: "Task 1", Value: "25" },
    { Phase: "Phase 2", Step: "Step 1", Task: "Task 2", Value: "30" },
    { Phase: "Phase 2", Step: "Step 2", Task: "Task 1", Value: "35" },
    { Phase: "Phase 2", Step: "Step 2", Task: "Task 2", Value: "40" }
]
Nach dem Login kopieren

Um die Objekte nach Phase zu gruppieren und die Summe zu berechnen of Value verwenden wir:

from itertools import groupby

def sum_value(objects):
    return sum(int(obj["Value"]) for obj in objects)

objects.sort(key=lambda obj: obj["Phase"])
grouped_by_phase = groupby(objects, key=lambda obj: obj["Phase"])

result = [{
    "Phase": phase,
    "Value": sum_value(objects)
} for phase, objects in grouped_by_phase]

print(result)
Nach dem Login kopieren

Dies ergibt die gewünschte Ausgabe:

[{"Phase": "Phase 1", "Value": 50}, {"Phase": "Phase 2", "Value": 130}]
Nach dem Login kopieren

Alternativ zum Gruppieren nach Sowohl Phase als auch Schritt können wir mehrere Ebenen von Groupby verwenden:

grouped_by_phase_and_step = groupby(objects, key=lambda obj: (obj["Phase"], obj["Step"]))

result = [{
    "Phase": phase,
    "Step": step,
    "Value": sum_value(objects)
} for (phase, step), objects in grouped_by_phase_and_step]

print(result)
Nach dem Login kopieren

Dies gibt Folgendes zurück:

[{"Phase": "Phase 1", "Step": "Step 1", "Value": 15}, {"Phase": "Phase 1", "Step": "Step 2", "Value": 35}, {"Phase": "Phase 2", "Step": "Step 1", "Value": 55}, {"Phase": "Phase 2", "Step": "Step 2", "Value": 75}]
Nach dem Login kopieren

Mit der vielseitigen Groupby-Methode von Python können Sie Daten einfach und effizient gruppieren und aggregieren Arrays von Objekten, die Ihren verschiedenen Gruppierungsanforderungen entsprechen.

Das obige ist der detaillierte Inhalt vonWie kann die „groupby'-Methode von Python Daten aus Arrays von Objekten effizient gruppieren und aggregieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage