gpt4 book ai didi

python - 根据时间范围对 pandas df 进行子集化

转载 作者:太空宇宙 更新时间:2023-11-04 02:19:14 26 4
gpt4 key购买 nike

我的 df 看起来像这样而且相当大:

    contract    time        Open        High        Low         Last
0 CME/TYH2018 2017-09-18 125.687500 125.750000 125.687500 125.750000
1 CME/TYH2018 2017-09-20 125.703125 125.750000 125.234375 125.375000
2 CME/TYH2018 2017-09-22 125.609375 125.609375 125.437500 125.484375
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
371 CME/TYZ2018 2018-07-12 119.984375 120.062500 119.859375 120.015625
372 CME/TYZ2018 2018-07-13 120.156250 120.234375 120.078125 120.218750
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

我希望按如下方式对数据进行切片。对于每一个独特的合约,都像这样切片:

每个合约的数据开始:

df.loc[df.contract=='CME/TYH2018'].time.max() - datetime.timedelta(days=100)

并丢弃所有其他行。

最佳答案

使用GroupBy.transform对于具有与 DataFrame 相同大小的 Series,使用 max,减去 timedelta 和最后一个过滤器 boolean indexing :

shifted =  df.groupby('contract')['time'].transform('max') - pd.Timedelta(100, unit='d')
df = df[df['time'] > shifted]

使用示例数据测试 3 天:

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

关于python - 根据时间范围对 pandas df 进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52003772/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com