有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