从特定行开始函数
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
我想知道,我如何才能 运行 一个方法或函数或仅用于 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