1. ホーム
  2. python

[解決済み] pandasの2つのデータフレームのクロスジョイン [重複]。

2022-03-03 09:57:15

質問

クロスジョインについて、merge/joinや他のものを含め、何も見つかりません。 私はmyfuncとして{my関数}を使用して2つのデータフレームを処理する必要があります。 に相当するものです。

{
    for itemA in df1.iterrows():
           for itemB in df2.iterrows():
                       t["A"] = myfunc(itemA[1]["A"],itemB[1]["A"])
 }      

に相当します。

{
 select myfunc(df1.A,df2.A),df1.A,df2.A from df1,df2;
}

しかし、私はより効率的なソリューションを必要としています。 使用される場合、私はそれらを実装する方法になりますthx;^^。

どのように解決するのですか?

クロスプロダクトについては この質問 .

基本的には、通常のマージを行う必要がありますが、すべての行に同じキーを与えて結合することで、フレームを越えてすべての行が互いに結合されるようにします。

そして、関数を適用することで、新しいフレームに列を追加することができます。

new_df = pd.merge(df1, df2, on=key)
new_df.new_col = new_df.apply(lambda row: myfunc(row['A_x'], row['A_y']), axis=1)

axis=1 勢力 .apply は行をまたいで動作します。上の例のようにマージされたフレームが列を共有している場合、'A_x' と 'A_y' が結果のフレームのデフォルトの列名となります。