如何匹配两个数据框,并从另一个数据框添加值?

时间:2020-09-11 10:02:09

标签: python pandas dataframe join

我有一个包含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行。

1 个答案:

答案 0 :(得分:1)

由于类别是唯一的,因此创建字典以将名称映射到类别值

dt = df.groupby('street_name').first()['street_name_categorical'].to_dict()

使用dt

映射街道名称
df2['street_name_categorical'] = df2['street_name'].map(dt)