【发布时间】:2019-09-28 07:41:26
【问题描述】:
我正在尝试访问前一行(或后一行)以用作新列中的值。尝试了几种使用 enumerate、iterrows 和 iloc 的方法,但最终遇到了同样的问题,它们使用了最后一个值。使用如下代码:
df = pd.DataFrame({'values':(50.033,50.025,49.979,49.954,49.936,49.935,49.93)})
df['a']=df.diff()
def my_func_disch(x):
if abs(x) >= 0 and abs(x) <= 0.009:
for index,row in df.iterrows():
eff_disch = row['values']
else:
eff_disch = 'xxx'
return eff_disch
df["b"] = df.a.apply(my_func_disch)
产生:
values a b
0 50.033 NaN xxx
1 50.025 -0.008 49.93
2 49.979 -0.046 xxx
3 49.954 -0.025 xxx
4 49.936 -0.019 xxx
5 49.935 0.000 49.93
6 49.930 -0.005 49.93
我希望它产生:
values a b
0 50.033 NaN xxx
1 50.025 -0.008 50.033
2 49.979 -0.046 xxx
3 49.954 -0.025 xxx
4 49.936 -0.019 xxx
5 49.935 0.000 49.936
6 49.930 -0.005 49.935
【问题讨论】: