GroupBy.transform
具有
max
对于
Series
同样大小的
DataFrame
boolean indexing
:
shifted = df.groupby('contract')['time'].transform('max') - pd.Timedelta(100, unit='d')
df = df[df['time'] > shifted]
用样本数据测试
3 days
:
shifted = df.groupby('contract')['time'].transform('max') - pd.Timedelta(3, unit='d')
df = df[df['time'] > shifted]
print (df)
contract time Open High Low Last
3 CME/TYH2018 2017-09-25 125.687500 125.812500 125.687500 125.765625
4 CME/TYH2018 2017-09-26 125.640625 125.796875 125.562500 125.625000
5 CME/TYH2018 2017-09-27 125.171875 125.218750 125.031250 125.125000
373 CME/TYZ2018 2018-07-16 120.000000 120.031250 119.859375 120.000000
374 CME/TYZ2018 2018-07-17 119.968750 120.046875 119.890625 119.953125
375 CME/TYZ2018 2018-07-18 119.875000 120.062500 119.843750 119.890625