複数のdataframeの直積を求めたい
例)
2つの表に対して
列x | 列y |
---|---|
1 | 11 |
2 | 12 |
3 | 12 |
列1 | 列2 |
---|---|
101 | 1001 |
102 | 1002 |
103 | 1003 |
生成したいdataframe
列x | 列y | 列1 | 列2 |
---|---|---|---|
1 | 11 | 101 | 1001 |
1 | 11 | 102 | 1002 |
1 | 11 | 103 | 1003 |
2 | 12 | 101 | 1001 |
2 | 12 | 102 | 1002 |
2 | 12 | 103 | 1003 |
3 | 13 | 101 | 1001 |
3 | 13 | 102 | 1002 |
3 | 13 | 103 | 1003 |
一応以下のコードで無理やり書けたのですが、もっとスマートに書く方法はあるでしょうか?
python3
df_0 = pd.DataFrame([[1,2,3],[11,12,13]]).T df_1 = pd.DataFrame([[101,102,103],[1001,1002,1003]]).T df_0.columns=['x','y'] df_1.columns=['z'] print(df_0) print(df_1) range_0 = range(len(df_0)) range_1 = range(len(df_1)) idx_ = list(itertools.product(range_0, range_1)) np_0 = np.array(df_0) np_1 = np.array(df_1) test = [np.concatenate([np_0[i,:],np_1[j,:]]) for (i,j) in idx_] test_df = pd.DataFrame(test) print(test_df)
まだ回答がついていません
会員登録して回答してみよう