パンダ:データフレームを結合するときにどのように2つのリストの列を集約します

SaadH:

私は、次の2つのデータフレームを持っています:

    id  websites
    --   ---
0   1   [cnn.com, bbc.com]
1   2   [ebay.com, facebook.com]

________________

    id  websites
    --   ---
0   2   [google.com, facebook.com]
1   3   [amazon.com, youtube.com]

私は上でそれらを外部結合したいidユニークを集約することで、列websitesマッチした行のために。出力は以下のようにする必要があります:

    id  websites    
    --   ---
0   1   [cnn.com, bbc.com]  
1   2   [ebay.com, facebook.com, google.com]
2   3   [amazon.com, youtube.com] 

私は今のところ以下のことを試してみました:

import pandas as pd

df_a = pd.DataFrame({'id':[1,2],'websites':[['cnn.com','bbc.com'],['ebay.com','facebook.com']]})
df_b = pd.DataFrame({'id':[2,3],'websites':[['google.com','facebook.com'],['amazon.com','youtube.com']]})
df_a.merge(df_b, on='id', how='outer')

これは私に次のような出力を与えています。

    id  websites_x                 websites_y
    --   ---                        ---
0   1   [cnn.com, bbc.com]         NaN
1   2   [ebay.com, facebook.com]   [google.com, facebook.com]
2   3   NaN                        [amazon.com, youtube.com]
anky_91:

あなたはそれらをCONCATし、その後にGROUPBYできるidカラム:

df_a = pd.DataFrame({'id':[1,2],'websites':[['cnn.com','bbc.com'],
                    ['ebay.com','facebook.com']]})
df_b = pd.DataFrame({'id':[2,3],'websites':[['google.com','facebook.com'],
                    ['amazon.com','youtube.com']]})

解決:

方法1:

a = df_a.explode('websites') #requires pandas version 0.25+
b = df_b.explode('websites') #requires pandas version 0.25+
out = pd.concat((a,b)).groupby('id')['websites'].apply(pd.unique).reset_index()
#or out = pd.concat((a,b)).groupby('id')['websites'].agg(set).reset_index()
print(out)

方法2:

使用して別の解決策itertools.chain.from_iterableデータフレームを爆発必要doesnot:

from itertools import chain
out = (pd.concat((df_a,df_b)).groupby('id')['websites']
     .apply(lambda x : dict.fromkeys(chain.from_iterable(x)).keys()).reset_index())
print (out)

   id                              websites
0   1                    [cnn.com, bbc.com]
1   2  [ebay.com, facebook.com, google.com]
2   3             [amazon.com, youtube.com]

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=32156&siteId=1