2024-09-27 00:19:02 发布
网友
我有一个数据帧
数据框:
col1 col2 col3 JHGK B name1 JHGK B name2 JHGK C name3 OPDR B name4 ERTH B name5 ERTH C name6
在对col1执行groupby之后,我想在(col2=B的不同col3值和col2=C的distinct col3值)之间做笛卡尔积
结果数据帧:
最终:
取df的子集,其中col2是B,取df的子集,其中col2是C。然后对col1执行联接,删除一些额外的列,然后重命名。:)
col2
col1
>>> 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
取df的子集,其中
col2
是B,取df的子集,其中col2
是C。然后对col1
执行联接,删除一些额外的列,然后重命名。:)相关问题 更多 >
编程相关推荐