【问题标题】:How to achieve an inner join in pandas [duplicate]如何在熊猫中实现内部连接[重复]
【发布时间】:2017-09-28 14:51:25
【问题描述】:

我需要有效地执行用 Python 实现的内部连接。

我有 2 个数据集,它们来自不同的来源,但共享一个共同的键。

让我们说(为了争论)它们看起来像这样:

person_likes = [{'person_id': '1', 'food': 'ice_cream', 'pastimes': 'swimming'},
                {'person_id': '2', 'food': 'paella', 'pastimes': 'banjo'}]

person_accounts = [{'person_id': '1', 'blogs': ['swimming digest', 'cooking puddings']},
                   {'person_id': '2', 'blogs': ['learn flamenca']}]

我怎样才能最好地加入这两组数据。我有这样的事情:

joins = []
for like in person_likes:
    for acc in person_accounts:
        if like['person_id'] == acc['person_id']:
            join = {}
            join.update(like)
            join.update(acc)
            joins.append(join)

print(joins)

这似乎工作正常(我没有对其进行广泛测试),乍一看似乎是我们能做的最好的 - 但我想知道是否有一种性能更高的已知算法,以及是否有更多这样做是惯用的还是 Pythonic 的方式?

【问题讨论】:

    标签: python pandas join


    【解决方案1】:

    Pandas 似乎是一个显而易见的答案。

    import pandas as pd
    accounts = pd.DataFrame(person_accounts)
    likes = pd.DataFrame(person_likes)
    pd.merge(accounts, likes, on='person_id')
    
                                 blogs person_id       food  pastimes
    # 0  [swimming digest, cooking puddings]         1  ice_cream  swimming
    # 1                     [learn flamenca]         2     paella     banjo
    

    【讨论】:

      猜你喜欢
      • 2020-05-22
      • 1970-01-01
      • 2018-07-11
      • 2019-03-08
      • 1970-01-01
      • 2020-06-23
      • 2021-07-02
      • 2020-06-16
      • 1970-01-01
      相关资源
      最近更新 更多