複数の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
1df_0 = pd.DataFrame([[1,2,3],[11,12,13]]).T 2df_1 = pd.DataFrame([[101,102,103],[1001,1002,1003]]).T 3 4df_0.columns=['x','y'] 5df_1.columns=['z'] 6 7print(df_0) 8print(df_1) 9 10range_0 = range(len(df_0)) 11range_1 = range(len(df_1)) 12 13idx_ = list(itertools.product(range_0, range_1)) 14 15np_0 = np.array(df_0) 16np_1 = np.array(df_1) 17 18test = [np.concatenate([np_0[i,:],np_1[j,:]]) for (i,j) in idx_] 19 20test_df = pd.DataFrame(test) 21print(test_df)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/11 04:39 編集