Python Pandas-Groupby上的笛卡尔积
我有一个数据帧 df: 在对col1进行groupby之后,我想在(col2=B的不同col3值和col2=C的不同col3值)之间进行笛卡尔积 结果数据帧: 最终:Python Pandas-Groupby上的笛卡尔积,python,pandas-groupby,cartesian-product,Python,Pandas Groupby,Cartesian Product,我有一个数据帧 df: 在对col1进行groupby之后,我想在(col2=B的不同col3值和col2=C的不同col3值)之间进行笛卡尔积 结果数据帧: 最终: col1 n1 n2 JHGK name1 name3 JHGK name2 name3 ERTH name5 name6 取df的子集,其中col2是B,取df的子集,其中col2是C。然后在col1上进行连接,删除一些额外的列,然后重命名。:) 取df的子集,其中col2是B,取df的子集,其中
col1 n1 n2
JHGK name1 name3
JHGK name2 name3
ERTH name5 name6
取df的子集,其中
col2
是B,取df的子集,其中col2
是C。然后在col1
上进行连接,删除一些额外的列,然后重命名。:)
取df的子集,其中
col2
是B,取df的子集,其中col2
是C。然后在col1
上进行连接,删除一些额外的列,然后重命名。:)
col1 n1 n2
JHGK name1 name3
JHGK name2 name3
ERTH name5 name6
>>> import pandas as pd
>>> df = pd.DataFrame({'col1': ['JHGK','JHGK','JHGK','OPDR','ERTH','ERTH'], 'col2': ['B','B','C','B','B','C'], 'col3': ['name1','name2','name3','name4','name5','name6']})
>>> df
col1 col2 col3
0 JHGK B name1
1 JHGK B name2
2 JHGK C name3
3 OPDR B name4
4 ERTH B name5
5 ERTH C name6
>>> df_joined = df[df['col2'] == 'B'].merge(df[df['col2'] == 'C'], on='col1').drop(['col2_x', 'col2_y'], axis=1).rename(columns={'col3_x': 'n1', 'col3_y': 'n2'})
>>> df_joined
col1 n1 n2
0 JHGK name1 name3
1 JHGK name2 name3
2 ERTH name5 name6