有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可以实现吗,谢谢解答
pandas中dataframe如何拆分得到两两关系
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注 可以通过 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)
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用 1
悬赏问题
- ¥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时遇到的编译问题