gpt4 book ai didi

python - 过滤掉不是前一年的精确倍数的组中的数据框行

转载 作者:太空宇宙 更新时间:2023-11-03 14:37:37 24 4
gpt4 key购买 nike

我想过滤掉每组“代码”中的列,以便剩下的只是在每个代码中我最近的时间戳之前正好 1、2、3 等年的行。例如:

数据

index     date         ticker    dividends
0 3/31/2019 AA 0.626
1 12/31/2018 AA 0.611
2 9/30/2018 AA 0.611
3 6/30/2018 AA 0.04
4 3/31/2018 AA 0.035
5 12/31/2017 AA 0.02
6 12/31/2018 CC 0.035
7 6/30/2018 CC 0.075
8 12/31/2017 CC 0.04
9 12/31/2016 CC 0.035
10 12/31/2015 CC 0.04
11 6/30/2015 CC 0.06

我愿意:

index     date         ticker    dividends
0 3/31/2019 AA 0.626
4 3/31/2018 AA 0.035
6 12/31/2018 CC 0.035
8 12/31/2017 CC 0.04
9 12/31/2016 CC 0.035
10 12/31/2015 CC 0.04

我已经用 data.groupby('ticker').filter 搞砸了一段时间......但我就是想不出一个 pythonic 的方法来做到这一点,特别是考虑到在每组 'ticker' 中最近的日期并不总是相同的,并且每组中日期之间的间隔不同。

最佳答案

从您的日期列创建一个日期系列:

d = pd.to_datetime(df['date'])

取每个股票代码的最近日期:

r = d.groupby(df['ticker']).transform('max')

从您的 DF 中获取月/日组件相同的行:

new_df = df[d.dt.month.eq(r.dt.month) & d.dt.day.eq(r.dt.day)]

这给你:

             date ticker  dividends
index
0 3/31/2019 AA 0.626
4 3/31/2018 AA 0.035
6 12/31/2018 CC 0.035
8 12/31/2017 CC 0.040
9 12/31/2016 CC 0.035
10 12/31/2015 CC 0.040

关于python - 过滤掉不是前一年的精确倍数的组中的数据框行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56512839/

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