2017-09-28 9 views
0

Pythonでインナー結合を効果的に実装する必要があります。Pythonで内部結合を実現する方法

私は2つのデータセットを持っていますが、別々のソースから来ていますが、共通のキーを共有しています。最善の方法私はこれら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) 

をこれが正常に動作するように見える(私は徹底的にそれをテストしていない)、そして一見私たちができる最善のように見える - しかし、これは既知のアルゴリズムがあるのだろうかこれを行うためのより慣用的な方法やPythonの方法がある場合は、より効果的ですか?

答えて

2

パンダは明らかな答えのようです。

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 
関連する問題