簡體   English   中英

熊貓在df中找到與上一行具有相同值的最后一行

[英]pandas find the last row with the same value as the previous row in a df

我有一個df

acct_no    code    date           id
100        10      01/04/2019     22
100        10      01/03/2019     22
100        10      01/05/2019     22
200        20      01/06/2019     33
200        20      01/05/2019     33
200        20      01/07/2019     33

acct_nocode相同時,我想按date升序對df進行排序,

df.sort_values(['acct_no', 'code', 'date'], inplace=True)

那么我想知道如何找到最后一行acct_nocode與上一行相同的結果,結果需要看起來像什么,

  acct_no    code    date           id
  100        10      01/05/2019     22
  200        20      01/07/2019     33

您也可以嘗試使用groupby.last()

df.groupby(['acct_no', 'code'],as_index=False).last()

   acct_no  code        date  id
0      100    10  01/05/2019  22
1      200    20  01/07/2019  33

使用DataFrame.drop_duplicates ,但首先將列轉換為日期時間:

#if dates are first use dayfirst=True
df['date'] = pd.to_datetime(df['date'], dayfirst=True)
#if months are first
#df['date'] = pd.to_datetime(df['date'])
df1 = (df.sort_values(['acct_no', 'code', 'date'])
         .drop_duplicates(['acct_no', 'code'], keep='last'))
print (df1)
   acct_no  code       date  id
2      100    10 2019-05-01  22
5      200    20 2019-07-01  33

暫無
暫無

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

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