wl2020mxxb 2023-04-29 17:26 采纳率: 55.6%
浏览 48
已结题

pandas中dataframe如何拆分得到两两关系

有2列dataframe,每一列中每行数据之间是空格隔开,比如
表头: 第1列 | 第2列
第1行| A B | A C
第2行| A | C
第3行| A D F | E G
等等
我想要将第1列中每行的值,与第2列中同一行的值两两对应,得到
第1行 A到A
第1行 A到C
第1行 B到A
第1行 B到C
第2行 A到C
第3行 A到E
第3行 A到G
第3行 D到E
第3行 D到G
第3行 F到E
第3行 F到G
这个如何在python中pandas可以实现吗,谢谢解答

  • 写回答

2条回答 默认 最新

  • Py小郑 Python领域潜力新星 2023-04-29 18:24
    关注

    可以通过 Pandas 中的 explode 和 merge 方法来实现。

    首先,将两列数据合并成一个 DataFrame,然后使用 explode 方法将每一行中的值拆分成多行,并根据原始 DataFrame 中的索引进行标记。

    接着,将拆分后的 DataFrame 使用 merge 方法自身关联,得到两两对应的结果。

    下面是完整代码实现:

    import pandas as pd
    
    # 创建示例数据
    df = pd.DataFrame({'col1': ['A B', 'A', 'A D F'], 'col2': ['A C', 'C', 'E G']})
    
    # 将每个单元格中的值拆分为多行并标记原始索引
    df = df.assign(col1=df.col1.str.split(' '), col2=df.col2.str.split(' '))
    df = df.explode('col1').explode('col2').reset_index()
    
    # 自身关联得到两两对应的结果
    result = pd.merge(df, df, on='index')
    
    # 提取需要的列并重命名
    result = result[['col1_x', 'col2_y']].rename(columns={'col1_x': 'col1', 'col2_y': 'col2'})
    
    # 打印结果
    print(result)
    
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月7日
  • 已采纳回答 4月29日
  • 修改了问题 4月29日
  • 修改了问题 4月29日
  • 展开全部

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题