如何使用Pandas从透视表生成二分类交叉验证表
方案1:基于已有透视表转换
如果已经生成了透视后的DataFrame(命名为pivot_df),直接调用pandas内置矢量化方法即可,无需任何循环:
binary_cross_table = pivot_df.notna()
该操作底层为C实现,处理大规模数据集时效率远高于Python层循环,输出结果会自动将非空值映射为True、空值映射为False,完全匹配二值化交叉验证表的要求。
方案2:从原始数据一步生成目标表
如果还未执行透视操作,可以在构建透视表时直接指定规则,一步得到结果,无需二次处理:
binary_cross_table = pd.pivot_table( raw_df, # 替换为你的原始数据集变量名 index="行维度列名", # 替换为实际行维度的列名 columns="列维度列名", # 替换为实际列维度的列名 aggfunc=lambda x: True, # 存在对应行列组合就返回True fill_value=False # 无对应组合填充False )
如果你有自定义有效值判定规则(比如0、空字符串也需要判定为False),可以叠加矢量化布尔判断调整,不会损失运行效率:
# 示例:空值和0值都判定为False,其余为True binary_cross_table = pivot_df.notna() & (pivot_df != 0)
内容的提问来源于stack exchange,提问作者Marco You
相关产品推荐
相关产品推荐

