You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将布尔类型pandas dataframe转换为方阵格式的dataframe

实现步骤

你可以按照以下步骤处理数据得到目标方阵:

  1. 先将原始Yes/No格式的布尔DataFrame转为0/1数值格式,再统计各特征组合的出现次数:
import pandas as pd

# 假设你的原始DataFrame名为df
# 转换Yes/No为0/1
df_num = df.replace({"Yes": 1, "No": 0})
# 按所有布尔列分组统计频次,生成带count列的统计DataFrame
df_count = df_num.groupby(['a', 'b', 'c', 'd'], as_index=False).size().rename(columns={'size': 'count'})

如果你已经有带count列的DataFrame,可以直接跳过第一步的分组统计步骤,直接执行第二步的逻辑即可。

  1. 初始化目标方阵,再按规则映射计数:
# 初始化结果矩阵
res = pd.DataFrame(0, index=['a','b','c','d'], columns=['a','b'])

for _, row in df_count.iterrows():
    cnt = row['count']
    # 处理a列计数
    if row['a'] == 1:
        res.loc['c', 'a'] += cnt
    # 处理b列计数
    if row['b'] == 1:
        if row['d'] == 1:
            res.loc['d', 'b'] += cnt
        else:
            res.loc['b', 'b'] += cnt
    # 处理a、b都为0的情况
    if row['a'] == 0 and row['b'] == 0:
        if row['c'] == 1:
            res.loc['c', 'b'] += cnt

运行上述代码后res就是你需要的目标方阵,如果实际业务的映射逻辑有调整,直接修改循环内的判断规则即可。


内容的提问来源于stack exchange,提问作者Nemra Khalil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 06:24:03