如何在pandas中编写支持多分组列的批量交叉表生成函数
交叉表函数适配多分组列解决方案
核心修改点
1. 兼容两类入参格式
统一处理入参tabs的类型:单字符串(单列分组)自动转为列表格式,和多列列表入参走同一套处理逻辑。
2. 修正列过滤逻辑
用列名差集替代原有的不等于判断,适配多分组列的过滤需求。
3. 适配pd.crosstab传参规则
行分组参数直接传入多列切片,无需额外嵌套列表,单/多列场景都可以正常识别。
完整修改后代码
def cts(tabs, df): out=[] # 统一入参格式为列表 tabs = [tabs] if isinstance(tabs, str) else tabs # 取非分组列 target_cols = df.columns.difference(tabs) for col in target_cols: a = pd.crosstab(index=df[tabs], columns=df[col]) out.append(a) return out
调用测试
单分组列调用(兼容原有写法)
# 按group列分组生成交叉表,和原有调用逻辑完全一致 res_single = cts('group', df)
多分组列调用(新增支持场景)
# 按group、class两个列分组生成交叉表,符合需求场景 res_multi = cts(['group', 'class'], df)
内容的提问来源于stack exchange,提问作者an10b3
相关产品推荐
相关产品推荐

