2016-03-30 10 views
0

ich einen Datenrahmen haben, die wie folgt aussieht: Gruppe von auf eindeutige Werte zu schaffen durch Datum erscheinen, sowie nicht-eindeutige Werte von Datum

groupings =insightevents.groupby([insightevents['created_at_date'].dt.year,\ 
      insightevents['created_at_date'].dt.month,\ 
         insightevents['created_at_date'].dt.week,insightevents['created_at_date'].dt.day, 
      insightevents['created_at_date'].dt.dayofweek]); 

inboxinsights=pd.DataFrame([groupings['app_id'].unique(),groupings['subproduct'].unique()]).transpose() 

Dies gibt

:

app_id subproduct date  
0 23  3  2015-05-29 
1 23  4  2015-05-29  
2 25  5  2015-05-29 
3 23  3  2015-05-29 
4 24  7  2015-05-29 
.... 

Ich betreibe me:

    app_id subproduct 
2015 5 22 29 4  [23,24,25] [3,4,5,7] 

doch was ich will, ist eigentlich nicht nur die einzigartigen Werte zu erhalten, aber alles in allem nur die app_ids und SUB_PRODUCT Lasten am Tag als zusätzliche Spalten, so:

   unique_ app_id unique_subproduct subproduct app_id 
2015 5 22 29 4  [23,24,25] [3,4,5,7]   [3,3,4,5,7] [23,23,23,24,25] 

Ich finde, dass gerade tun:

inboxinsights=pd.DataFrame([groupings['app_id'].unique(), groupings['subproduct'].unique(),groupings['app_id'],groupings['subproduct']]).transpose() 

nicht funktioniert und gibt mir nur:

AttributeError: 'Series' object has no attribute 'type' 

Antwort

0

Wenn Sie nur die Anzahl der eindeutigen wollte Werte, das ist einfach:

inboxinsights.groupby('date').agg({'app_id': 'nunique', 'subproduct': 'nunique'})

kehrt:

just the number of uniques

Aber es sieht aus wie Sie die Liste von dem, was wollen die tatsächlich sind. Ich fand this other SO question hilfreich:

not_unique_inboxinsights = groupby('date').agg(lambda x: tuple(x))

enter image description here

Und dann sagen, Sie wollen sowohl die einzigartige und nicht eindeutig. Dafür würde ich zwei groupby Datenrahmen machen und verketten sie, wie folgt aus:

unique_inboxinsights = groupby('date').agg(lambda x: set(tuple(x)))

concatenated together

Hoffnung, das hilft.

+0

Nur eine Klarstellung, die Set-Methode, die ich verstehe, schafft eine ungeordnete Reihe von einzigartigen Gegenständen. Die Ausgabe in meinem Datenrahmen ist nicht '{3,4,5,7}', sondern 'set ([3, 4,5,7])'. Wird das erwartet? –

+0

das sind die gleichen. ipython notebook zeigt es nur anders an. – szeitlin