通过值计数过滤数据帧

问题描述:

一直在尝试这一段时间,但没有得到任何地方。 请考虑下面的DF。通过值计数过滤数据帧

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 

我想将数据分组到社区和邻里是否的计数小于说10,它应该被放入一个组other。我看到了其他答案,但无法解释它们。我曾尝试

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

也试过

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

但这并不工作。也试图groupby邻里和应用过滤器,但没有去。请帮忙。

这是我所期待实现

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

请显示其他失败的尝试。 –

+0

'house_df.groupby ['Neighborhood']。filter(lambda x:x.count Harj

+0

请修改您的问题。这是相关信息 –

使用value_counts计数街区和maplambda产生适当的分组的例子。

vc = df.Neighborhood.value_counts() 

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

这不是我要找的。如果邻居的数量少于10,我想把'邻居'放到'other'组中。换句话说,我想减少维数,并且使其他邻居组的邻居数小于10。 – Harj

+0

@Harj这就是我做了什么。除了我用了少于2个,因为你没有提供足够的数据来显示它与10的样子。如果这仍然不是你想要的,考虑编辑你的问题,并明确你想要什么。 – piRSquared

+0

我编辑了这个问题。谢谢 – Harj