猿问

熊猫在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

我想首先df按升序对date何时acct_no和code相同,


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

然后我想知道找到最后一行的方法,其acct_no,code与前一行相同,结果需要看起来像,


  acct_no    code    date           id

  100        10      01/05/2019     22

  200        20      01/07/2019     33


慕仙森
浏览 85回答 2
2回答

忽然笑

您也可以尝试groupby.last():df.groupby(['acct_no', 'code'],as_index=False).last()   acct_no  code        date  id0      100    10  01/05/2019  221      200    20  01/07/2019  33

收到一只叮咚

使用DataFrame.drop_duplicates,但首先将列转换为日期时间:#if dates are first use dayfirst=Truedf['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  id2      100    10 2019-05-01  225      200    20 2019-07-01  33
随时随地看视频慕课网APP

相关分类

Python
我要回答