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

如何基于行内首个非空值动态对pandas DataFrame执行除法运算

解决方案

易读实现(适合中小数据量)

核心思路是逐行提取首个非空值作为基准除数,再将整行数据除以该值得到剩余占比:

# 提取每行首个非空值作为基准
first_val = pivot.apply(lambda row: row.dropna().iloc[0], axis=1)
# 按行计算剩余占比
retention = pivot.div(first_val, axis=0)
# 可按需保留小数位,例保留3位:retention = retention.round(3)

高性能实现(适合百万级以上大数据量)

用向量化操作替代逐行遍历,运行效率更高:

# 生成非空掩码矩阵
mask = pivot.notna()
# 取每行第一个非空值的列索引
first_col_idx = mask.values.argmax(axis=1)
# 批量提取每行首个非空值
first_val = pivot.values[range(len(pivot)), first_col_idx]
# 按行计算剩余占比
retention = pivot.div(first_val, axis=0)

效果验证

以行索引2020-02的行为例:
首个非空值为15,2020-03列值13计算得13/15≈0.87,2020-04列值8计算得8/15≈0.533,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:15:00