Pandas:执行混合交叉连接和内部连接



我正在处理以下600000行的大型数据帧df

idx1    idx2    Val         
38      4       101         
38      23      103         
39      4       104         
39      23      105         
40      4       105         
40      23      106 

CCD_ 2对于每个CCD_。

我需要对df执行联接,使列idx1上有cross join,列idx2上有inner join,以获得以下内容:

idx1    idx2    Val idx11   idx21   Val1
38      4       101 39      4       104
38      23      103 39      23      105
38      4       101 40      4       105
38      23      103 40      23      106
39      4       104 40      4       105
39      23      105 40      23      106

我不知道如何处理上述问题。

尝试#2:

df.merge(df, how='cross').query('idx2_x == idx2_y and idx1_x != idx1_y')

输出:

idx1_x  idx2_x  Val_x  idx1_y  idx2_y  Val_y
2       38       4    101      39       4    104
4       38       4    101      40       4    105
9       38      23    103      39      23    105
11      38      23    103      40      23    106
12      39       4    104      38       4    101
16      39       4    104      40       4    105
19      39      23    105      38      23    103
23      39      23    105      40      23    106
24      40       4    105      38       4    101
26      40       4    105      39       4    104
31      40      23    106      38      23    103
33      40      23    106      39      23    105

试试这个:

df.merge(df, on='idx1', how='outer').query('idx2_x == idx2_y')

输出:

idx1  idx2_x  Val_x  idx2_y  Val_y
0     38       4    101       4    101
3     38      23    103      23    103
4     39       4    104       4    104
7     39      23    105      23    105
8     40       4    105       4    105
11    40      23    106      23    106

最新更新