簡體   English   中英

Python 數據框 - 基於列刪除連續行

[英]Python dataframe - drop consecutive rows based on a column

我需要根據列值刪除連續的行。 我的數據框如下所示

df = pd.DataFrame({
            "CustID":
                ["c1","c1","c1","c1","c1","c1","c1","c1","c1","c1","c2","c2","c2","c2","c2","c2"],
            "saleValue":
                [10, 12, 13, 6, 4 , 2, 11, 17, 1,5,8,2,16,13,1,4],
             "Status":
                [0, 0, 0, 1, 1 ,1, 0, 0, 1,1,1,1,0,0,1,1]
            
            
    })

dataframe looks like below

  CustID    saleValue   Status
    c1            10    0
    c1            12    0
    c1            13    0
    c1             6    1
    c1             4    1
    c1             2    1
    c1            11    0
    c1            17    0
    c1             1    1
    c1             5    1
    c2             8    1
    c2             2    1
    c2            16    0
    c2            13    0
    c2             1    1
    c2             4    1
    

僅當狀態為 1 時,我才需要刪除每個 CustID 的連續行。你能告訴我最好的方法嗎

so the output should look like below.
 

CustID  saleValue   Status
    c1        10          0
    c1        12          0
    c1        13          0
    c1         6          1
    c1        11          0
    c1        17          0
    c1         1          1
    c2         8          1
    c2        16          0
    c2        13          0
    c2         1          1

為整個 DataFrame 創建一個布爾掩碼。

給定DataFrame已經按ID分組,查找值為1,前一行也是1,且ID與前一行ID相同的行。 這些是要刪除的行,所以保留其余的行。

to_drop = (df['Status'].eq(1) & df['Status'].shift().eq(1)  # Consecutive 1s
           & df['CustID'].eq(df['CustID'].shift()))         # Within same ID  

df[~to_drop]

   CustID  saleValue  Status
0      c1         10       0
1      c1         12       0
2      c1         13       0
3      c1          6       1
6      c1         11       0
7      c1         17       0
8      c1          1       1
10     c2          8       1
12     c2         16       0
13     c2         13       0
14     c2          1       1

暫無
暫無

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

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