我有一个dataframe:
hrs running_hrs
0 203.889578 24
1 155.929832 24
2 180.248357 24
3 112.502220 24
4 102.261148 24
5 86.982634 24
6 35.552699 24
7 29.260349 24
8 0.577342 24
9 -23.297091 0
10 -42.875767 0
11 -77.278587 0
我必须从HRS列中搜索第一个负值,然后用HRS列的最后一个非零值替换Running_HR。
预期输出:
hrs running_hrs
0 203.889578 24
1 155.929832 24
2 180.248357 24
3 112.502220 24
4 102.261148 24
5 86.982634 24
6 35.552699 24
7 29.260349 24
8 0.577342 24
9 -23.297091 0.577342
10 -42.875767 0
11 -77.278587 0
我尝试找到负值,但选择了所有负值。
任何人都可以建议正确的方法吗?
使用lt
idxmax
-
i = df.hrs.lt(0).idxmax()
用loc
-
df.loc[i, 'running_hrs'] = df.loc[i - 1, 'hrs']
df
hrs running_hrs
0 203.889578 24.000000
1 155.929832 24.000000
2 180.248357 24.000000
3 112.502220 24.000000
4 102.261148 24.000000
5 86.982634 24.000000
6 35.552699 24.000000
7 29.260349 24.000000
8 0.577342 24.000000
9 -23.297091 0.577342
10 -42.875767 0.000000
11 -77.278587 0.000000
如果需要,请确保i
在分配之前大于0
-
if i > 0:
df.loc[i, 'running_hrs'] = df.loc[i - 1, 'hrs']
否则,您可能会遇到索引错误。