2016-08-14 23 views
-1

在數據幀具有以下柱:條件raplacement具有索引移位熊貓

0 
0 
0 
0 
0 
5 

我想檢查的值大於閾值。如果找到,設置爲零並向上移動差值 - 閾值,在新位置上設置閾值。假設threshold = 3,那麼結果列必須是:

0 
0 
0 
3 
0 
0 

任何快速轉換的想法?

+0

此示例似乎並沒有足夠的代表性。會發生什麼如果我的閾值爲3,則值爲5,並且下面的值爲5兩行。它應該是零還是三? – ayhan

+0

這不可能發生。列中的值(比方說5)是來自另一列0或1的累計結果,表示一系列的和:如果在彼此之後有5次1,則該值在其最後位置處爲5。所以累計值不能大於兩個值之間的指數差。 – Joe

回答

0

對於這個數據幀:

df 
Out: 
    A 
0 0 
1 0 
2 0 
3 0 
4 0 
5 5 
6 0 
7 0 
8 0 
9 0 
10 6 
11 0 
12 0
threshold = 3 
above_threshold = df['A'] > threshold 
df.loc[df[above_threshold].index - (df.loc[above_threshold, 'A'] - 3).values, 'A'] = 3 
df.loc[above_threshold, 'A'] = 0 
df 
Out: 
    A 
0 0 
1 0 
2 0 
3 3 
4 0 
5 0 
6 0 
7 3 
8 0 
9 0 
10 0 
11 0 
12 0