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

求助:为已unstack的DataFrame添加总计列的实现方案

问题:为Unstack后的DataFrame添加总计列

原始已unstack的DataFrame结构:

churn_label No  Yes
under_30        
No      4077    1564
Yes     1097    304

目标格式(添加总计列后):

churn_label No  Yes   Total
under_30        
No         4077 1564   5174
Yes        1097 304    1868

尝试的错误代码:

data_df = customer_churn_df.groupby(["under_30", "churn_label"]).count()

data_df["total_count"] = data_df["customer_id"].unstack(level = -1).sum()

data_df["total_count"]

得到的结果:

under_30  churn_label
No        No            NaN
          Yes           NaN
Yes       No            NaN
          Yes           NaN

正确实现方法

方法一:直接对Unstack后的DataFrame按行求和

如果数据已经是unstack后的状态(under_30为索引,No/Yes为列),直接调用sum(axis=1)计算每行总和:

# 假设unstack后的DataFrame变量名为unstacked_df
unstacked_df['Total'] = unstacked_df.sum(axis=1)

方法二:从GroupBy阶段直接生成带总计的结果

如果还未完成unstack操作,可整合分组、unstack、求和步骤,避免索引不匹配问题:

# 分组计数后直接unstack
data_df = customer_churn_df.groupby(["under_30", "churn_label"])["customer_id"].count().unstack()
# 添加总计列
data_df['Total'] = data_df.sum(axis=1)

错误原因说明

你之前的代码中,data_df["customer_id"].unstack(level=-1).sum()返回的是仅以under_30为索引的求和结果,但原data_df是双重索引(under_30+churn_label),两者索引不匹配,导致赋值后全部为NaN。

内容的提问来源于stack exchange,提问作者Erick Vivas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 03:35:04