gpt4 book ai didi

python - 按最近 3 个月和 ID 过滤数据

转载 作者:太空宇宙 更新时间:2023-11-04 09:30:13 28 4
gpt4 key购买 nike

我有 pandas 数据框,其中有 2 列,

    ID   Month

1 Jan-18
1 Dec-17
1 Feb-18
1 Nov-17
1 Oct-17
1 Sep-17
2 Jan-18
2 Dec-17
2 Feb-18
2 Nov-17
2 Oct-17
2 Mar-18

我想通过ID获取最近3个月的数据

预期输出,

    ID   Month

1 Dec-17
1 Jan-18
1 Feb-18

2 Jan-18
2 Feb-18
2 Mar-18

我尝试了 pandas 的过滤技术,但我未能应用多个条件,其中第二个条件是最近几个月。

最佳答案

使用to_datetime首先,按 DataFrame.sort_values 对两列进行排序, 通过 Series.dt.strftimeMonth 列转换回原始格式并调用GroupBy.tail :

df['Month'] = pd.to_datetime(df['Month'], format='%b-%y')
df1 = (df.sort_values(['ID','Month'])
.assign(Month=df['Month'].dt.strftime('%b-%y'))
.groupby('ID')
.tail(3))
print (df1)
ID Month
1 1 Dec-17
0 1 Jan-18
2 1 Feb-18
6 2 Jan-18
8 2 Feb-18
11 2 Mar-18

另一种带有月周期的解决方案:

df['Month'] = pd.to_datetime(df['Month'], format='%b-%y').dt.to_period('m')
df1 = (df.sort_values(['ID','Month'])
.groupby('ID')
.tail(3))
print (df1)
ID Month
1 1 2017-12
0 1 2018-01
2 1 2018-02
6 2 2018-01
8 2 2018-02
11 2 2018-03

关于python - 按最近 3 个月和 ID 过滤数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56020628/

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