2017-04-25 10 views
2

habe versucht dies für eine Weile, aber nicht überall. Bitte beachten Sie die DF unten.Filter Datenfeld nach Wert zählt

Id YearBuilt SalePrice Neighborhood 
    1  2003  208500  CollgCr 
    2  1976  181500  Veenker 
    3  2001  223500  CollgCr 
    4  1915  140000  Crawfor 
    5  2000  250000  NoRidge 
    6  1993  143000  Mitchel 
    7  2004  307000  Somerst 
    8  1973  200000  NWAmes 
    9  1931  129900  OldTown 
    10  1939  118000  BrkSide 
    11  1965  129500  Sawyer 
    12  2005  345000  NridgHt 
    13  1962  144000  Sawyer 
    14  2006  279500  CollgCr 
    15  1960  157000  NAmes 
    16  1929  132000  BrkSide 
    17  1970  149000  NAmes 

ich gruppieren möchten die Daten in Nachbarschaften und wenn die Anzahl der Nachbarschaft weniger als 10 sagen, sollte es in eine Gruppe other gestellt werden. Ich habe andere Antworten gesehen, konnte sie aber nicht interpretieren. Ich habe versucht,

house_df['newColumn'] = house_df['Neighborhood'].mask(house_df['Neighborhood'].count < 50, 'other') 

auch versucht

house_df.groupby['Neighborhood'].filter(lambda x: x.count < 10) 

aber dieses nicht funktioniert. auch versucht, groupby Nachbarschaft und einen Filter anwenden, aber nicht gehen. bitte hilfe.

Dies ist ein Beispiel dessen, was ich bin auf der Suche

Id YearBuilt SalePrice Neighborhood newColumn 
1  2003  208500  CollgCr Collgcr 
2  1976  181500  Veenker other 
3  2001  223500  CollgCr CollgCr 
4  1915  140000  Crawfor other 
5  2000  250000  NoRidge NoRidge 
6  1993  143000  Mitchel Mitchel 
7  2004  307000  Somerst other 
8  1973  200000  NWAmes NWAmes 
+0

Zeigen Sie den anderen fehlgeschlagenen Versuch bitte. –

+0

'house_df.groupby ['Nachbarschaft']. Filter (lambda x: x.count <10)' – Harj

+0

Bitte bearbeiten Sie Ihre Frage. Das sind relevante Informationen –

Antwort

2

Verwendung zu erreichen value_counts die Nachbarschaften und map mit einem lambda zählen eine entsprechende Gruppierung zu erzeugen.

vc = df.Neighborhood.value_counts() 

df = df.assign(
    newColumn=df.Neighborhood.map(
     lambda x: x if vc.at[x] > 1 else 'other' 
    ) 
) 
+0

Das ist nicht, was ich suche. Ich möchte die 'Neighborhood' in die Gruppe' Other' einfügen, wenn die Anzahl der Nachbarschaften kleiner als 10 ist. Mit anderen Worten, ich möchte die Dimension reduzieren und die Nachbarschaften kleiner als 10 in 'Other' Gruppe setzen – Harj

+0

@Harj das ist was ich getan habe. Außer, dass ich weniger als 2 verwendet habe, weil Sie nicht genügend Daten angegeben haben, um zu zeigen, wie es mit 10 aussehen würde. Wenn das immer noch nicht das ist, was Sie wollen, können Sie Ihre Frage bearbeiten und klarstellen, was Sie wollen. – piRSquared

+0

Ich habe die Frage bearbeitet. Danke – Harj