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

Pandas技巧:如何提取每行最后一个非零列的数据

提取每行最后一个非零层级值的简洁方案

Excel/Google Sheets 实现

不用嵌套多层条件,直接用LOOKUP函数一步解决:

=LOOKUP("zzzz", B2:E2)

逻辑:LOOKUP会匹配区域内最后一个小于等于查找值的内容,用"zzzz"这类足够大的文本,就能直接定位到最后一个非零的文本值(0作为数值会被忽略)。如果层级列包含数值型非零数据,改用:

=LOOKUP(9.99E+307, B2:E2)

Python Pandas 实现

一行代码完成处理,无需复杂循环:

import pandas as pd

# 假设数据集存储在df中,层级列为Lvl 1至Lvl 4
df['Desired Output'] = df[['Lvl 1', 'Lvl 2', 'Lvl 3', 'Lvl 4']].replace(0, pd.NA).bfill(axis=1).iloc[:, 0]

逻辑:先把0替换为缺失值,再按行反向填充(从右往左用最近的非缺失值覆盖缺失值),最后取每行第一列,就是原数据中最后一个非零值。

SQL 实现

利用COALESCE函数从右往左取第一个非零值:

SELECT 
    ID,
    COALESCE(
        CASE WHEN Lvl4 != 0 THEN Lvl4 END,
        CASE WHEN Lvl3 != 0 THEN Lvl3 END,
        CASE WHEN Lvl2 != 0 THEN Lvl2 END,
        Lvl1
    ) AS Desired_Output
FROM your_table;

如果数据库中0已被存储为NULL,可简化为:

SELECT ID, COALESCE(Lvl4, Lvl3, Lvl2, Lvl1) AS Desired_Output FROM your_table;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 07:52:49