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

如何基于指定列列表生成与CLASS关联的独立交叉表

批量生成单列与CLASS的独立交叉表

问题分析

你当前代码将多列打包为列表传入pd.crosstab,导致生成合并的多维度交叉表。要批量生成单个列与CLASS的独立交叉表,只需**遍历指定列名,逐个调用pd.crosstab**即可,无需重复编写代码。

示例代码

假设你的DataFrame已加载为g,可按以下方式实现:

import pandas as pd

# 示例数据(若未加载数据可直接使用)
data = {
    'GND': ['F', 'M', 'M', 'F', 'M'],
    'BRD': ['A', 'D', 'S', 'S', 'S'],
    'ERS': ['AB', 'CB', 'AV', 'AV', 'CB'],
    'CLASS': ['ON', 'ON', 'ON', 'OFF', 'ON']
}
g = pd.DataFrame(data)

# 指定需要生成交叉表的列名列表
cols_to_cross = ['GND', 'BRD', 'ERS']

# 批量生成并存储交叉表,用字典保存便于后续调用
cross_tables = {}
for col in cols_to_cross:
    cross_tables[col] = pd.crosstab(g[col], g['CLASS'])

# 逐个输出独立交叉表
for col, table in cross_tables.items():
    print(f"--- {col} 与 CLASS 的交叉表 ---")
    print(table)
    print()

输出结果

运行后将得到三个独立的交叉表:

--- GND 与 CLASS 的交叉表 ---
CLASS OFF ON
GND
F 1 1
M 0 3

--- BRD 与 CLASS 的交叉表 ---
CLASS OFF ON
BRD
A 0 1
D 0 1
S 1 2

--- ERS 与 CLASS 的交叉表 ---
CLASS OFF ON
ERS
AB 0 1
AV 1 1
CB 0 2

说明

  1. 使用列名字符串列表替代原代码中的Series列表,遍历过程可直接通过列名索引DataFrame的对应列
  2. 用字典cross_tables存储每个交叉表,键为列名、值为对应交叉表DataFrame,方便后续单独调用(例如cross_tables['GND']即可获取GND的交叉表)
  3. 遍历过程中可直接打印结果,也可将结果保存至文件或用于后续分析

内容的提问来源于stack exchange,提问作者zuma boy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 15:52:17