簡體   English   中英

在熊貓數據框中查找第一個重復的連續條目

[英]Finding first repeated consecutive entries in pandas dataframe

我有一個包含StockDueDate兩列的數據,我需要根據 stock 列從重復的連續條目中選擇第一行。

df:

df

我期待如下輸出,

預期輸出:

輸出

我的方法

我嘗試使用的方法是首先通過創建一個新列repeat_yes列出所有基於股票列重復的行,然后僅當任何行重復兩次以上時才對第一行進行子集化。

我使用下面的代碼行創建了新列“repeated_yes”,

    ss = df.Stock.ne(df.Stock.shift())
    df['repeated_yes'] = ss.groupby(ss.cumsum()).cumcount() + 1 

所以新更新的數據框看起來像這樣,

df_new

在此處輸入圖片說明

但我堅持只對第3行和第8行進行子集化以獲得結果。 如果有任何其他有效的方法會有所幫助。

編輯:忘記包含實際的完整問題,如果數據幀df的最后一行下方還有任何其他行,則不應顯示任何輸出。

Series.duplicated創建的另一個掩碼與keep=False by &用於按位AND並在boolean indexing過濾:

ss = df.Stock.ne(df.Stock.shift())
ss1 = ss.cumsum().duplicated(keep=False)

df = df[ss & ss1]

暫無
暫無

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

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