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

时间:2019-08-02 11:55:34

标签: python python-3.x pandas dataframe

我有一个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

dfdate相同时,我想先对acct_no的{​​{1}}进行升序排序,

code

然后,我想知道如何找到df.sort_values(['acct_no', 'code', 'date'], inplace=True) acct_no与上一行相同的最后一行,结果需要看起来像

code

2 个答案:

答案 0 :(得分:3)

您也可以尝试使用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

答案 1 :(得分:2)

使用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