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

标签 python pandas dataframe pandas-groupby

我想过滤掉每组“代码”中的列,以便剩下的只是在每个代码中我最近的时间戳之前正好 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/

相关文章:

python - 如何使用 View 中的列表在 Django 中创建下拉列表

python - Django 休息框架 : XMLHttpRequest cannot load http://127. 0.0.1:8000/xyz/api/abc

python-3.x - Groupby id 并在大矩阵 (3x3 mio.) 上展开(或求和)

python - 使用 pandas 方法链接过滤每组中任何一个满足条件的行

python - 导入错误 : No module named 'telegram. vendor.ptb_urllib3

python - Heroku 返回 "ImportError: No module named fcntl on window"

python - Pandas 。将值与其他 DataFrame 中的相应范围进行匹配

python - Pandas 矢量化方式创建大小为 n 的组?

python - 从 pandas 数据框中删除值分布极其不均匀的列

python - 如何在 iPython 笔记本中预览 Pandas DataFrame 的一部分?