繁体   English   中英

根据 dataframe 中的列选择最新值

[英]Selecting latest values based on column from a dataframe

我有一个 dataframe ,其数据如下:

    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日期的行。 即所需的 output 是:

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

我想我需要在某些方面使用groupby ,但我无法将它放在一起。

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

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')
)

Output:

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

您可以简单地使用系列中的pd.Dataframe.nlargest

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM