如何为已展开(unstack)的DataFrame添加总计列

发布时间 - 2026-02-01 00:00:00    点击率:

本文介绍如何在已通过 `unstack()` 转换为宽格式的分组统计 dataframe 中,高效、准确地新增一列用于显示每行的横向合计(即按列求和),并避免因索引错位导致的 nan 问题。

在使用 pandas 进行多维度频数分析时,常通过 groupby().size().unstack() 将数据转为“行列交叉表”形式(如 churn_label 为列,under_30 为行索引)。此时若需补充每行的总计(即该年龄段下“是/否流失”的总客户数),必须对当前宽表结构直接按行求和,而非对原始分组结果或未对齐的中间结构操作——否则极易因索引不匹配产生全 NaN。

正确做法如下:

# 步

骤1:生成规范的宽格式交叉表(推荐用 size() + unstack) data_df = customer_churn_df.groupby(["under_30", "churn_label"]).size().unstack(fill_value=0) # 步骤2:沿行方向(axis=1)求和,生成新列;自动对齐索引,无 NaN 风险 data_df["Total"] = data_df.sum(axis=1)

✅ 关键说明:

  • 使用 .size()(而非 .count())可避免空值干扰,且返回 Series 更利于后续 unstack;
  • fill_value=0 确保缺失组合(如某 under_30 值下无 Yes 样本)填充为 0,保障求和完整性;
  • data_df.sum(axis=1) 直接作用于当前 DataFrame,天然保持行索引对齐,彻底规避原代码中 unstack(level=-1).sum() 导致的索引错位问题。

⚠️ 注意事项:

  • 切勿在 unstack 后再次调用 unstack 或对已展开结果做复杂索引变换——这会破坏行列结构;
  • 若原始列名含多级索引(如 churn_label 是列名层级),data_df.sum(axis=1) 仍安全有效;
  • 如需重命名列(如将 "Total" 替换为 "total_count"),直接赋值即可:data_df.rename(columns={"Total": "total_count"})。

最终输出即为你所需的结构:

churn_label   No  Yes  Total
under_30                 
No          4077 1564   5641
Yes         1097  304   1401

(注:示例数值基于逻辑推算,实际以你的数据为准)


# pandas  # count  # 而非  # 多维  # 所需  # 如需  # 或对  # 转换为  # 即为  # 这会  # 极易  # 重命名 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: php485函数参数是什么意思_php485各参数详细说明【介绍】  Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】  Laravel如何实现用户注册和登录?(Auth脚手架指南)  如何在万网主机上快速搭建网站?  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  JavaScript如何实现错误处理_try...catch如何捕获异常?  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  Laravel安装步骤详细教程_Laravel环境搭建指南  微信公众帐号开发教程之图文消息全攻略  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  如何用花生壳三步快速搭建专属网站?  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  java中使用zxing批量生成二维码立牌  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  Laravel集合Collection怎么用_Laravel集合常用函数详解  网页设计与网站制作内容,怎样注册网站?  如何在Windows虚拟主机上快速搭建网站?  大连 网站制作,大连天途有线官网?  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  网站优化排名时,需要考虑哪些问题呢?  Laravel API资源类怎么用_Laravel API Resource数据转换  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  b2c电商网站制作流程,b2c水平综合的电商平台?  *服务器网站为何频现安全漏洞?  浅析上传头像示例及其注意事项  ,交易猫的商品怎么发布到网站上去?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  手机软键盘弹出时影响布局的解决方法  Android okhttputils现在进度显示实例代码  如何在阿里云域名上完成建站全流程?  手机网站制作与建设方案,手机网站如何建设?  如何快速搭建高效WAP手机网站吸引移动用户?  Python文件流缓冲机制_IO性能解析【教程】  如何正确选择百度移动适配建站域名?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  Laravel distinct去重查询_Laravel Eloquent去重方法  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  网站页面设计需要考虑到这些问题  如何在IIS中新建站点并配置端口与IP地址?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  微信h5制作网站有哪些,免费微信H5页面制作工具?  Laravel Docker环境搭建教程_Laravel Sail使用指南  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  Linux系统命令中tree命令详解  如何在IIS管理器中快速创建并配置网站?