我有一个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
的{{1}}进行升序排序,
code
然后,我想知道如何找到df.sort_values(['acct_no', 'code', 'date'], inplace=True)
,acct_no
与上一行相同的最后一行,结果需要看起来像
code
答案 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