[英]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, groupby
和tail
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_values
和drop_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.