如何基于空Pandas DataFrame生成所有独热编码组合的DataFrame?
解决方案
要生成包含所有0/1独热编码组合的DataFrame,可以借助itertools.product生成笛卡尔积,再转换为Pandas DataFrame,具体实现如下:
示例(3列空DataFrame)
import pandas as pd import itertools # 创建示例空DataFrame df_empty = pd.DataFrame(columns=['col1', 'col2', 'col3']) # 获取列名列表 cols = df_empty.columns # 生成所有0和1的组合:2^3=8种 all_combinations = list(itertools.product([0, 1], repeat=len(cols))) # 转换为目标DataFrame df_full = pd.DataFrame(all_combinations, columns=cols) print(df_full)
执行后会输出包含8行的DataFrame,覆盖col1/col2/col3所有0/1组合。
推广到58列的场景
只需将示例中的空DataFrame替换为你的58列空DataFrame即可,核心代码逻辑一致:
import pandas as pd import itertools # 假设这是你的58列空DataFrame df_empty = pd.DataFrame(columns=[f'col{i}' for i in range(1, 59)]) cols = df_empty.columns all_combinations = list(itertools.product([0, 1], repeat=len(cols))) df_full = pd.DataFrame(all_combinations, columns=cols)
重要注意事项
58列的场景下,所有组合的数量为2^58,约等于2.88×10^17行——这个数据量远超常规存储和计算的极限,甚至无法在内存中加载,实际操作中几乎不可能生成完整的DataFrame。如果你的真实需求并非生成全部组合,建议调整方案(比如生成抽样组合、或针对特定业务逻辑生成子集)。
内容的提问来源于stack exchange,提问作者Negative Correlation
相关产品推荐
相关产品推荐

