[英]Finding first repeated consecutive entries in pandas dataframe
我有一個包含Stock和DueDate兩列的數據框,我需要根據 stock 列從重復的連續條目中選擇第一行。
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.