den folgenden Datenrahmen vor:Filter Pandas Datenrahmen von GroupBy Inhalt
records = [{'item': 'Widget A', 'quantity': 50, 'revenue': 25.0, 'trandate': '2016-3-24'},
{'item': 'Widget B', 'quantity': 6, 'revenue': 72.0, 'trandate': '2016-3-28'},
{'item': 'Widget C', 'quantity': 5, 'revenue': 75.0, 'trandate': '2016-3-28'},
{'item': 'Widget A', 'quantity': 168, 'revenue': 84.0, 'trandate': '2016-3-29'},
{'item': 'Widget B', 'quantity': 6, 'revenue': 84.0, 'trandate': '2016-3-29'}]
indices = [487, 488, 493, 495, 497]
df = pd.DataFrame(records, index=indices)
Nachgeben
id item quantity revenue trandate
487 Widget A 50 25.0 2016-3-24
488 Widget B 6 72.0 2016-3-28
493 Widget C 6 75.0 2016-3-28
495 Widget A 6 84.0 2016-3-29
497 Widget B 6 84.0 2016-3-29
Ich brauche diesen Datenrahmen in zwei komplementäre Sätze aufgeteilt:
Ein Datenrahmen, dass enthält die ersten Transaktionen für jede
item
:id item quantity revenue trandate 487 Widget A 50 25.0 2016-3-24 488 Widget B 6 72.0 2016-3-28 493 Widget C 6 75.0 2016-3-28
Ein Datenrahmen, die die ersten Transaktionen für jeden
item
ausschließt:id item quantity revenue trandate 495 Widget A 6 84.0 2016-3-29 497 Widget B 6 84.0 2016-3-29
würde Ich mag df
von einem GroupedBy Objekt filtern, aber ich kann nicht df
‚s Indizes bekommen Nach dem Gruppieren:
gb = df.groupby('item')
>>> gb.groups
# {'Widget A': [487, 495], 'Widget B': [488, 497], 'Widget C': [493]}
>>> gb['trandate'].min()
item
Widget A 2016-3-24
Widget B 2016-3-28
Widget C 2016-3-28
Kann ich GroupBy verwenden, um ein Da zu erhalten? taFrame wie:
id item
487 Widget A 2016-3-24
488 Widget B 2016-3-28
493 Widget C 2016-3-28