Pandas で 2 つ以上のデータフレームを操作する場合、デカルト積を取得する必要がある場合があり、その結果、次のような新しいデータフレームが生成されます。入力データフレームの行のすべての組み合わせ。
Pandas の最近のバージョンでは、マージ関数を利用して、how='cross' 引数を使用してこの操作を実行できます。このアプローチは簡潔かつ効率的です。
import pandas as pd df1 = pd.DataFrame({'col1':[1,2],'col2':[3,4]}) df2 = pd.DataFrame({'col3':[5,6]}) df_cartesian = df1.merge(df2, how='cross')
Pandas の以前のバージョンでは、少し異なるテクニックが必要です。これには、両方のデータフレームの行ごとに繰り返されるキー列の作成が含まれます。このキー列が追加されると、マージを使用してデカルト積を実行できます。
import pandas as pd from pandas import merge df1 = pd.DataFrame({'key':[1,1], 'col1':[1,2],'col2':[3,4]}) df2 = pd.DataFrame({'key':[1,1], 'col3':[5,6]}) merge(df1, df2,on='key')[['col1', 'col2', 'col3']]
このアプローチはより複雑ですが、古いバージョンの Pandas では効果的に機能します。
以上がPandas で DataFrame のデカルト積を効率的に計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。