2017-10-29 4 views
1

Also, ich habe eine Datenrahmen bekommt, das wie folgt aussieht: enter image description hereMit Boolesche Aussagen und Manipulation ursprünglichen Datenrahmen

mit 308 verschiedenen ORIGIN_CITY_NAME und 12 verschiedenen UNIQUE_CARRIER.

ich die Städte entfernen versuchen, wo die Anzahl der eindeutigen Träger Fluggesellschaft < 5 Als solche ist, dass ich diese Funktion ausgeführt:

enter image description here

Jetzt will ich mich dieses Ergebnis nehmen mag, und manipuliere meine ursprünglichen Daten, df so, dass ich die Zeilen entfernen kann, in denen ORIGIN_CITY_NAME dem Wert TRUE entspricht.

Ich hatte eine Idee im Hinterkopf, die Isin() - Funktion oder die Anwendung (Lambda) -Funktion in Python verwenden soll, aber ich bin nicht vertraut, wie es geht. Gibt es einen eleganteren Weg? Vielen Dank!

+0

zeigen Sie uns Ihre (nicht so) elegant Code und wir können – 0TTT0

+0

@ 0TTT0 Die 'nicht-so-elegante' Code funktioniert nicht helfen, weil ich versuche, isin() Funktion zu verwenden. Aber trotzdem würde ich einige Ihrer Eingaben schätzen, wenn Sie welche haben! Danke – misheekoh

+0

@misheekoh Ich denke, ich weiß, was Sie suchen, und ich habe eine Antwort entsprechend hinterlassen. Der versuchte Code hilft jedoch auf verschiedene Arten. 1. Normalerweise stellst du eine Frage, weil du etwas nicht verstehst. Likely, wenn Sie etwas nicht verstehen, können Sie es falsch beschreiben. Daher zeigt der bereitgestellte Code, dass Ihre Versuche verdeutlichen, was Sie versuchen zu tun. 2. Es zeigt, dass Sie das tatsächlich selbst versuchen. Diese Seite läuft auf Menschen, die freiwillig ihre Zeit verbringen, um Fragen zu beantworten. Wir mögen es im Allgemeinen nicht, sich für diejenigen zu bemühen, die sich nicht anstrengen. – piRSquared

Antwort

1

filter wurde für diese

df.groubpy('ORIGIN_CITY_NAME').filter(
    lambda d: d.UNIQUE_CARRIER.nunique() >= 5 
) 

machte jedoch entlang der Vene fortzusetzen Sie zu bekommen Ergebnisse versuchten ...

ich map verwenden würde

mask = df.groubpy('ORIGIN_CITY_NAME').UNIQUE_CARRIER.nunique() >= 5 

df[df.ORIGIN_CITY_NAME.map(mask)] 

Oder transform

mask = df.groupby('ORIGIN_CITY_NAME').UNIQUE_CARRIER.transform(
    lambda x: x.nunique() >= 5 
) 

df[mask] 
Verwandte Themen