基于数据框中的列选择最新值

2024-09-27 22:40:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧,它的数据如下:

    SymbolTime  AsdRtg MaturityDate
0   2019-10-18  1.9500   2020-05-01
1   2019-10-19  1.9820   2020-05-01
2   2019-10-20  2.1075   2020-05-01
3   2019-10-18  2.1075   2020-08-01
4   2019-10-19  1.7790   2020-08-01

我想从上面提取数据,以便只返回具有最新SymbolTime日期的行。i、 e.期望输出为:

    SymbolTime  AsdRtg MaturityDate
2   2019-10-20  2.1075   2020-05-01
4   2019-10-19  1.7790   2020-08-01

我想我需要在某些方面使用groupby,但我不能把它放在一起


Tags: 数据groupbymaturitydateasdrtgsymboltime
3条回答

IIUC,sort_valuesdrop_duplicates

(df.sort_values('SymbolTime')    # your data appears to be sorted by SymbolTime, so you can drop this
   .drop_duplicates('MaturityDate',keep='last')
)

输出:

   SymbolTime  AsdRtg MaturityDate
4  2019-10-19  1.7790   2020-08-01
2  2019-10-20  2.1075   2020-05-01

IIUC,groupbytail

df.SymbolTime = pd.to_datetime(df.SymbolTime)

df.groupby(df.SymbolTime.diff().dt.days.ne(1).cumsum()).tail(1)

  SymbolTime  AsdRtg MaturityDate
2 2019-10-20  2.1075   2020-05-01
4 2019-10-19  1.7790   2020-08-01

您可以简单地使用pd.Dataframe.nlargestfrom series

df.loc[df.SymbolTime.nlargest(2).index]

编辑

df.loc[df.sort_values('MaturityDate',ascending=False)['SymbolTime'].nlargest(2).index]

输出:

SymbolTime  AsdRtg  MaturityDate
2   2019-10-20  2.1075  2020-05-01
4   2019-10-19  1.7790  2020-08-01

相关问题 更多 >

    热门问题