簡體   English   中英

在熊貓的另一列中找到每個數字條紋的最大值

[英]find the maximum value for each streak of numbers in another column in pandas

我有一個像這樣的數據框:

 df = pd.DataFrame({'dir': [1,1,1,1,0,0,1,1,1,0], 'price':np.random.randint(100,200,10)})

      dir  price 
    0    1    100
    1    1    150
    2    1    190
    3    1    194
    4    0    152
    5    0    151
    6    1    131
    7    1    168
    8    1    112
    9    0    193

並且我想要一個新列來顯示最高價格,只要dir為1,並在dir為0時重置。我想要的結果如下所示:

   dir  price   max
0    1    100   194
1    1    150   194
2    1    190   194
3    1    194   194
4    0    152   NaN
5    0    151   NaN
6    1    131   168
7    1    168   168
8    1    112   168
9    0    193   NaN

transform max transform用於已過濾的行:

#get unique groups for consecutive values
g = df['dir'].ne(df['dir'].shift()).cumsum()
#filter only 1
m = df['dir'] == 1
df['max'] = df[m].groupby(g)['price'].transform('max')
print (df)
   dir  price    max
0    1    100  194.0
1    1    150  194.0
2    1    190  194.0
3    1    194  194.0
4    0    152    NaN
5    0    151    NaN
6    1    131  168.0
7    1    168  168.0
8    1    112  168.0
9    0    193    NaN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM