2017-06-09 6 views
2

habe ich einen Datensatz, die wie folgt aussieht:Einträge basierend auf Gruppe von

venue_id,latitude,longitude,venue_category,country_code,user_id,uct_time,time_offset 
4af833a6f964a5205a0b22e3,13.693775,100.751152,Airport,TH,4337,Tue Apr 03 20:35:48 +0000 2012,420 
4af833a6f964a5205a0b22e3,13.693775,100.751152,Airport,TH,101773,Tue Apr 03 20:46:53 +0000 2012,420 
4af833a6f964a5205a0b22e3,13.693775,100.751152,Airport,TH,105093,Tue Apr 03 22:39:56 +0000 2012,420 
4af833a6f964a5205a0b22e3,13.693775,100.751152,Airport,TH,58835,Tue Apr 03 22:54:52 +0000 2012,420 
.... 

und ich brauche die venue_id zu entfernen, die weniger als 100 Vorkommen haben.

Ich habe versucht, den folgenden Code zu verwenden:

joined = joined[joined.groupby("venue_id").venue_id.transform(len) >= 100] 

die 13446480. durch die Antwort von der Frage, mit ID inspiriert

Das Problem ist, dass es mir die folgende Störung gibt:

Bitte bedenken Sie, dass ich neu zu Pandas und ich möchte lernen, wenn Sie also eine Erklärung geben könnten, wäre ich dankbar.

Cheers,

Dan

+0

Was ist 'print (df.index)'? – jezrael

+0

@jezrael Ich habe das Problem mit Ihrem ersten Vorschlag gelöst –

+0

Supeeer, froh kann helfen! – jezrael

Antwort

1

Es scheint erste Spaltenindex ist, so reset_index helfen.

So brauchen:

joined = joined.reset_index() 
joined = joined[joined.groupby("venue_id")['venue_id'].transform(len) >= 100] 

für mich auch funktioniert, wenn erste Spaltenindex ist und nicht reset_index brauchen:

joined = joined[joined.groupby("venue_id").transform(len) >= 100] 

Wenn im letzten Versionen von Pandas nicht verwenden (0.20.1), dann ist notwendig, einige hinzufügen Spalte:

joined = joined[joined.groupby(level="venue_id")['latitude'].transform(len) >= 100] 

EDIT1:

Faster wird size als len verwendet.

joined = joined[joined.groupby("venue_id")['latitude'].transform('size') >= 100] 
Verwandte Themen