我在excel中有数据,其中有两列“峰值”和“标签”。我想基于“峰值”列在“标签”列中添加值。 因此,输入看起来像下面的
Peak Value 0 0 0 88 0 0 88 0 0 88 0
Label 0 0 0 0 0 0 0 0 0 0 0
输入
只要“峰值”中的值大于零,就会在“标签”中加1并替换其下的所有零。对于下一个大于零的值,应将其递增为2,并将所有零替换为2。
因此,输出将如下所示:
Peak Value 0 0 0 88 0 0 88 0 0 88 0
Label 0 0 0 1 1 1 2 2 2 3 3
输出
以此类推。...
我尝试编写函数,但是当“峰值”中的值大于0时,我只能加1。
def funct(row):
if row['Peak Value']>0:
val = 1
else:
val = 0
return val
df['Label']= df.apply(funct, axis=1)
答案 0 :(得分:0)
也许您可以尝试使用cumsum
和ffill
:
import numpy as np
df['Labels'] = (df['Peak Value'] > 0).groupby(df['Peak Value']).cumsum()
df['Labels'] = df['Labels'].replace(0, np.nan).ffill().replace(np.nan, 0).astype(int)
输出:
Peak Value Labels
0 0 0
1 0 0
2 0 0
3 88 1
4 0 1
5 0 1
6 88 2
7 0 2
8 0 2
9 88 3
10 0 3