首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并数据帧

合并数据帧
EN

Stack Overflow用户
提问于 2018-05-29 00:14:59
回答 2查看 204关注 0票数 0

我已经在这个问题上挣扎了一整天。我有两个数据帧,如下:

Dataframe 1-广告牌

数据帧2

我想将基于歌曲的数据帧2和数据帧1合并,最终得到一个具有SongId、歌曲、等级和年份的数据帧。问题是,歌曲的存储方式有一些变化。例如: Billboard中的歌曲可以是macarena bayside男孩的混合,而Dataframe 2中的歌曲可能是macarena。我想找出相似之处。

EN

回答 2

Stack Overflow用户

发布于 2018-05-29 01:22:22

我认为您需要计算df1和df2中的歌曲列表之间的相似性度量。我尝试了一下,在随机生成的歌曲列表上计算df1和df2中的歌曲之间的余弦距离。

代码语言:javascript
复制
from sklearn.feature_extraction.text import TfidfVectorizer
vect = TfidfVectorizer(min_df=1)

Song1 = ["macarena bayside boys mix", "cant you hear my heart beat", "crying in the chapell", "you were on my mind"]
Song2 = ["cause im a man", "macarena", "beat from my heart"]

dist_dict = {}
match_dict = {}
for i in Song1 :
    for j in Song2 :
        tfidf = vect.fit_transform([i, j])
        distance = ((tfidf * tfidf.T).A)[0,1]
        if i in dist_dict.keys():
            if dist_dict[i] < distance :
                dist_dict[i] = distance
                match_dict[i] = j
        else :
            dist_dict[i] = distance

找到最佳匹配后,您可以在df2中查找歌曲ID

票数 1
EN

Stack Overflow用户

发布于 2018-05-29 00:35:06

最简单的方法是: 1.将"Song“作为两个数据帧中的索引列,如下所示

代码语言:javascript
复制
df1.set_index('Song', inplace=True)
df2.set_index('Song', inplace=True)

  1. 使用join:

joined = df1.join(df2, how='inner')

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50570217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档