我正在研究纽约市房地产销售数据集(https://www.kaggle.com/new-york-city/nyc-property-sales)。
有一列“建筑类别类别”,其中包含几个不同的分类字符串值。我要做的是仅选择出现次数最多的前4个类别,然后将其余的值合并为一个。 对于前
> dataset["BUILDING CLASS CATEGORY"].value_counts()
01 ONE FAMILY DWELLINGS 12686
10 COOPS - ELEVATOR APARTMENTS 11518
02 TWO FAMILY DWELLINGS 9844
13 CONDOS - ELEVATOR APARTMENTS 7965
09 COOPS - WALKUP APARTMENTS 2504
03 THREE FAMILY DWELLINGS 2318
07 RENTALS - WALKUP APARTMENTS 1743
所以我想要的是将前4类的所有实例替换为一些整数值,例如
01 ONE FAMILY DWELLINGS instances are replaced by 0
10 COOPS - ELEVATOR APARTMENTS instances are replaced by 1
02 TWO FAMILY DWELLINGS instances are replaced by 2
13 CONDOS - ELEVATOR APARTMENTS instances are replaced by 3
all the other instances are replaced by integer 4
因此,下次我运行该命令时,它应该输出如下内容:
> dataset["BUILDING CLASS CATEGORY"].value_counts()
0 12686
1 11518
2 9844
3 7965
4 6565 #sum of all the other instances
我尝试使用LabelEncoder,但是我的方法太长了,因此,如果有有效的方法,请告诉我。
答案 0 :(得分:0)
让我们简短地这样称呼你的系列:
building_cat = dataset["BUILDING CLASS CATEGORY"]
这是您已经做过的事情:
vc = building_cat.value_counts()
现在获得前4名的列表:
top4 = vc[:4].index.tolist()
并将其映射到您的df:
building_cat = building_cat.map(lambda x: top4.index(x) if x in top4 else 4)
我没有下载数据集,如果它不起作用,我将在本地尝试。
您可以根据需要更改类型:
building_cat = building_cat.astype("category")