【问题标题】:Merge two dataframes on two columns合并两列上的两个数据框
【发布时间】:2018-05-27 21:46:58
【问题描述】:

我有 2 个数据框:

dfBB

排名、歌曲、艺术家、年份

dfMap

艺术家、歌曲、SongId、ArtistId

我想根据艺术家和歌曲将它们合并在一起,即:它们匹配的地方我添加额外的列,否则为 0:

艺术家、歌曲、歌曲 ID、艺术家 ID、排名、年份

我预见到艺术家或歌曲可能拼写错误的另一个问题。也许我可以检查相似性?不太清楚该怎么做。

对于我尝试的合并:

merged = pd.merge(dfMap, dfBB, on='Artist' and 'Song', how='outer')

但是得到了:

Artist_x, Song, SongId, ArtistId, Rank, Artist_y, Rank 

【问题讨论】:

    标签: python pandas dataframe sentence-similarity


    【解决方案1】:
    merged = pd.merge(dfMap, dfBB, on=['Artist','Song'], how='outer')
    

    您可以使用值列表或数组来合并两个数据框。我建议检查documentation

    关于拼写错误,您需要自己进行一些清理工作。您可能想查看difflib

    【讨论】:

    • 谢谢...关于相似性而不是相等性例如:如果我的相似性很高,它也会合并 - 我找到了 difflib SequenceMatcher 但不太确定如何使用它
    • 很高兴你找到了 difflib。但是,在这种情况下,我不建议这样做。艺术家会有相似的名字和歌曲。我最初会做一些 EDA 来找出你有多少拼写错误。
    • 我实际上有很多 ex:我在一个数据帧中写成 im ..没有使用撇号
    • 我无法为您编写代码,因为我不知道您的数据是什么样的。在我的脑海中,您可以尝试用正确的拼写替换这样的实例,或者您可以尝试删除所有标点符号。我或 SO 将无法解决这些战略选择。寻找最佳解决方案需要反复试验。
    猜你喜欢
    • 2019-08-16
    • 2019-05-04
    • 1970-01-01
    • 1970-01-01
    • 2020-10-20
    • 2017-01-20
    • 1970-01-01
    • 2019-09-19
    相关资源
    最近更新 更多