如何获取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
相关产品推荐
相关产品推荐

