Durchlaufen der Gruppen (Python pandas dataframe)
Möchte ich Durchlaufen Gruppen gruppiert sind, durch Zeichenketten oder Datumsangaben.
df = pd.DataFrame({'A': ['foo', 'bar'] * 3,
'B': ['me', 'you', 'me'] * 2,
'C': [5, 2, 3, 4, 6, 9]})
groups = df.groupby('A')
ZB in diesem code habe ich Gruppen, die mit Namen 'foo' und 'bar', und ich kann die Schleife über Sie mit;
for name, group in groups:
print name
Mein problem ist ich muss eine weitere Schleife in dieser Schleife, und jedesmal, wenn ich anrufen müssen verschiedenen Gruppen. wie (übernehmen Gruppen der Größe n)
for name,group in groups:
for name1 in range(name, name + 9): # + 9 to get first 9 groups for every iteration`
Da, name ist ein string, ich bin nicht in der Lage, das zu tun. Kurz gesagt ich will einfach nur eine Methode, mit deren Hilfe ich Zugriff auf Gruppen von zahlen, so dass ich problemlos aufrufen, gewünschten Gruppen für die Berechnung.
So etwas wie
groups = df.group('A')
for i in range(0,n):
print group(i)[] + group(i+1)[]
also wenn ich folgende Gruppen [g1,g2,g3,g4,g5], ich will iterativ rufen Sie in Paaren wie [g1,g2], [g2,g3], [g3,g4] .... und nehmen Sie die Kreuzung der 2 Gruppen der Reihe ankommen. Ich bin auf der Suche nach Weg, um Anruf-Gruppen [g1,g2,.., g5], die durch den index oder nicht. so dass ich Sie verwenden können, für loop-Operationen. Die derzeit einzige Möglichkeit, die ich kenne anrufen-Gruppen wird durch den Namen der Gruppe, wie oben erwähnt, im Beispiel 'foo' und 'bar'.
Ich will macht, das zu tun-Operationen, wie:
for name,group in groups-1:
print gb.get_group(name)
print gb.get_group(name+1)
Ich weiß, dies könnte ein einfaches problem, aber ich habe gekämpft für dieses Teil seit einer Weile. Ich würde mich über jede Art von Hilfe.
Es ist nicht klar, was Sie brauchen-ist es genug, um alle 9 Gruppen eine Zeit für die Arbeit oder gibt es da eine Bestellung auf die Gruppen? Wenn die Gruppen geordnet sind, ist es, weil Sie Ihre Schlüssel bestellt werden?
also wenn ich folgende Gruppen [g1,g2,g3,g4,g5], ich will iterativ rufen Sie in Paaren wie [g1,g2], [g2,g3], [g3,g4] .... und nehmen Sie die Kreuzung der 2 Gruppen der Reihe ankommen. Ich bin auf der Suche nach Weg, um Anruf-Gruppen [g1,g2,.., g5], die durch den index oder nicht. so dass ich Sie verwenden können, für loop-Operationen. Die derzeit einzige Möglichkeit, die ich kenne anrufen-Gruppen wird durch den Namen der Gruppe, wie oben erwähnt, im Beispiel 'foo' und 'bar'.
Nehmen Sie sich bitte einige Daten (auch random ist ausreichend), und geben Sie die erwartete Leistung, das macht es einfacher zu verstehen.
InformationsquelleAutor Bunny | 2015-04-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
.groupby()
Objekt hat einen.groups
Attribut, das gibt ein Python dict der Indizes. In diesem Fall:Können Sie Durchlaufen diese wie folgt:
Bitte Bedenken Sie jedoch, dass die Verwendung von
for
- Schleifen zur Iteration über Pandas Objekte ist in der Regel langsamer als Vektor-Operationen. Je nachdem, was getan werden muss, und wenn es sein muss, schnell, möchten Sie vielleicht versuchen andere Ansätze.InformationsquelleAutor S Anand