如何在pandas DataFrame中按列生成所有元素的笛卡尔积组合
你需要的结果本质是DataFrame各列唯一值的笛卡尔积,可通过以下两种方法实现:
方法1:使用itertools.product实现(兼容性最好)
import pandas as pd import itertools # 构造示例DataFrame,可替换为自己的数据源 df = pd.DataFrame({ 'A': [1,4], 'B': [2,5], 'C': [3,6] }) # 生成各列唯一值的笛卡尔积 all_combinations = itertools.product(*[df[col].unique() for col in df.columns]) # 转换为目标结构DataFrame result = pd.DataFrame(all_combinations, columns=df.columns)
方法2:使用pandas原生跨表合并实现(pandas 1.2.0及以上版本支持)
# 逐列做笛卡尔积合并 result = (df[['A']].drop_duplicates() .merge(df[['B']].drop_duplicates(), how='cross') .merge(df[['C']].drop_duplicates(), how='cross'))
两种方法输出的result均为你需要的所有元素组合结果。
内容的提问来源于stack exchange,提问作者Shubham Chauhan
相关产品推荐
相关产品推荐

