我有一个包含87k数据点的训练数据集。看起来像这样。
index street_name street_name_categorical
0 Nyhavn 1
1 Nyhavn 1
2 Gotgade 2
3 Botgade 3
4 Marmorgade 4
...
总共87,000行。
这是我要测试的新数据集,但是将训练数据中的分类值添加到新数据集中。
新数据集
index street_name
0 Nyhavn
1 Marmorgade
2 Gotgade
3 Totgade
4 Gotgade
...
总共1.4k行。
所需的输出将在新的数据集中:
index street_name street_name_categorical
0 Nyhavn 1
1 Marmorgade 4
2 Gotgade 2
3 Totgade NA
4 Gotgade 2
...
应返回1.4k行。
我尝试了以下代码行,但未返回所需的输出。
street_name_cat_from_train = train[["street_name","street_name_cat"]]
merged_df = new_data.merge(street_name_cat_from_train, on = ['street_name'])
merged_df
返回197k行。
答案 0 :(得分:1)
由于类别是唯一的,因此创建字典以将名称映射到类别值
dt = df.groupby('street_name').first()['street_name_categorical'].to_dict()
使用dt
df2['street_name_categorical'] = df2['street_name'].map(dt)