从特定行开始函数

Start function from a specific row

我想知道,我如何才能 运行 一个方法或函数或仅用于 not-NaN 行的循环。我不想删除数据框并重置索引。现在,我正在使用 AvgHigh 函数,但它也在考虑 NaN 行。另外,如果建议的方法可以同时用于系列和数组。如果没有,请为两者提出建议。提前致谢。

编辑

def AvgHigh(src, val) :
    dat_list = []
    last_src = np.nan              # init variable that keeps the prev iteration value
    for a in range(len(src)) :
        if src[a] > val :
            dat_list.append(src[a])    # yield src[a]
            last_src = src[a]          # update prev iteration value (for next iteration)
        elif (src[a] <= val) and (a == 0) :
            dat_list.append(np.nan)    # yield np.nan
        elif (src[a] <= val) and (a != 0) :
            dat_list.append(last_src)  # yield src[a-1]
    return dat_list

df1['high_r'] = AvgHigh(df1['Values'], 14020)

这应该会找到您要查找的 high_r 列。添加了对 pd.nan 值的检查。

df1 = pd.DataFrame({'values': [np.nan, np.nan,np.nan, np.nan,np.nan, 14018,14022,14023,14021,14020,14014]})

def AvgHigh(src, val) :
    dat_list = []
    last_src = np.nan              # init variable that keeps the prev iteration value
    for a in range(len(src)):
        if not np.isnan(src[a]): ##<<<<<<New if statement
            if src[a] > val :
                dat_list.append(src[a])    # yield src[a]
                last_src = src[a]          # update prev iteration value (for next iteration)
            elif (src[a] <= val) and (a == 0) :
                dat_list.append(np.nan)    # yield np.nan
            elif (src[a] <= val) and (a != 0) :
                dat_list.append(last_src)  # yield src[a-1]
        else: ##<<<<<<New else statement
            dat_list.append(np.nan)
    return dat_list

df1['high_r'] = AvgHigh(df1['values'], 14020)
df1

     values   high_r
0       NaN      NaN
1       NaN      NaN
2       NaN      NaN
3       NaN      NaN
4       NaN      NaN
5   14018.0      NaN
6   14022.0  14022.0
7   14023.0  14023.0
8   14021.0  14021.0
9   14020.0  14021.0
10  14014.0  14021.0