簡體   English   中英

在大熊貓groupby中的未來行中進行條件搜索

[英]Conditional search in future rows within groupby in pandas

以下是我擁有的數據框。 “目標”列是所需的輸出。

   Group    Item    Value   Target
    1        0         5      0 
    1        1         4      0
    1        0         6      0
    1        0         3      1
    1        1         2      0
    1        0         1      1
    2        1         8      0
    2        0         9      0
    2        0         7      1

在給定的Groupif Item == 1 ,那么我試圖找到第一行Future / next行,其中Value小於Item == 1的相應Value 例如,在第二行中,將Item == 1和相應的Value是4。未來的第一行,其中Value小於4是具有第4行Value的3。因此, Target列指定找到一個1.如果條件滿足,則兩個Item==1可能具有相同的將來行。 在這種情況下,我們在Target也可以有一個1。

import pandas as pd
df = pd.DataFrame({'Group1': [1,1,1,1,1,1,2,2,2], 'Item': [0,1,0,0,1,0,1,0,0],  'Value': [5,4,6,3,2,1,8,9,7]})
df['next_Value'] = df.groupby(['Group'])['Value'].shift(-1)

創建一個帶有cumsum的幫助鍵,然后嘗試使用transform獲取每個組的第一個值,並將組中的每個值與第一個值進行比較,如果較小,則應返回1

df['helpkey']=df.groupby('Group').Item.cumsum()
df['New']=(df.Value<df.groupby(['Group','helpkey']).Value.transform('first')).astype(int)
df
Out[51]: 
   Group  Item  Value  Target  helpkey  New
0      1     0      5       0        0    0
1      1     1      4       0        1    0
2      1     0      6       0        1    0
3      1     0      3       1        1    1
4      1     1      2       0        2    0
5      1     0      1       1        2    1
6      2     1      8       0        1    0
7      2     0      9       0        1    0
8      2     0      7       1        1    1

暫無
暫無

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

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