幕布斯7119047
设置m = pd.MultiIndex(levels=[[1, 2, 3, 8], [10, 11]], labels=[[0, 0, 1, 1, 2, 2, 3, 3], [0, 1, 0, 1, 0, 1, 0, 1]])您可以对底层numpy数组进行操作a = np.stack(m.values)v = df.valuesres = v[a]c = res.shape[-1]u = pd.DataFrame(res.reshape(-1, df.shape[1]), columns=df.columns)u['pair'] = np.repeat(np.arange(u.shape[0] // c), c) col_1 col_2 pair0 2 3 01 20 21 02 2 3 13 22 23 14 4 5 25 20 21 26 4 5 37 22 23 38 6 7 49 20 21 410 6 7 511 22 23 512 16 17 613 20 21 614 16 17 715 22 23 7解释当我们使用 的所有组合索引 DataFrame 的值时,我们MultiIndex不仅获得了正确的映射,而且我们将分组的行在输出的一个维度中组合在一起。稍后我们可以使用这个形状来推断pair列。print(v[a])array([[[ 2, 3], [20, 21]], [[ 2, 3], [22, 23]], [[ 4, 5], [20, 21]], [[ 4, 5], [22, 23]], [[ 6, 7], [20, 21]], [[ 6, 7], [22, 23]], [[16, 17], [20, 21]], [[16, 17], [22, 23]]], dtype=int64)