我有一个df,acct_no code date id100 10 01/04/2019 22100 10 01/03/2019 22100 10 01/05/2019 22200 20 01/06/2019 33200 20 01/05/2019 33200 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
2 回答
忽然笑
TA贡献1806条经验 获得超5个赞
您也可以尝试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
收到一只叮咚
TA贡献1821条经验 获得超4个赞
使用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
添加回答
举报
0/150
提交
取消