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

如何获取Pandas DataFrame指定列中首个非零值的索引

获取DataFrame指定列首个非零值的索引

针对你提供的DataFrame,要获取c2列中首个非零值的索引,有以下几种简洁的实现方式:

方法一:布尔索引 + idxmax()

利用布尔筛选出非零值的位置,idxmax()会返回第一个True对应的索引(True等价于1,False等价于0,第一个1的位置就是首个非零值的索引):

import pandas as pd

df = pd.DataFrame(
    [[0,0,0],
    [0,0,3],
    [1,5,7],
    [8,7,3]],
    columns=['c1','c2','c3'])

# 获取c2列首个非零值的索引
first_non_zero_idx = (df['c2'] != 0).idxmax()
print(first_non_zero_idx)  # 输出:2

方法二:替换0为缺失值 + first_valid_index()

先将列中的0替换为缺失值(pd.NA),再用first_valid_index()返回第一个非缺失值的索引:

first_non_zero_idx = df['c2'].replace(0, pd.NA).first_valid_index()
print(first_non_zero_idx)  # 输出:2

方法三:遍历列(适合小数据集)

如果数据集较小,也可以直接遍历列的元素,找到第一个非零值的索引:

for idx, val in df['c2'].items():
    if val != 0:
        first_non_zero_idx = idx
        break
print(first_non_zero_idx)  # 输出:2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:15:42