Python 按过去3个月和ID筛选数据
我有一个数据框,其中有两列Python 按过去3个月和ID筛选数据,python,pandas,Python,Pandas,我有一个数据框,其中有两列 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个月的数据 预期产量 I
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
我尝试了从熊猫身上筛选出的技术,但在第二个条件是最近几个月的情况下,我未能应用多个条件 首先使用,按两列排序,将月份列转换回原始格式,然后调用:
另一个具有月周期的解决方案:
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
首先使用,按两列排序,将月份列转换回原始格式,然后调用:
另一个具有月周期的解决方案:
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
不带赋值的选项
不带赋值的选项
谢谢。这个解决方案非常有效。非常感谢。还需要一个帮助。如何获取剩余数据,我指的是相反的条件。@Ajayjadhav-如果有默认索引,请使用df2=df[~df.index.isindf1.index]非常感谢您的及时帮助非常感谢。这个解决方案非常有效。非常感谢。还需要一个帮助。如何获取剩余数据,我指的是相反的条件。@Ajayjadhav-如果有默认索引,请使用df2=df[~df.index.isindf1.index]非常感谢您的及时帮助
df['Month'] = pd.to_datetime(df['Month'], format='%b-%y')
df2=df.sort_values(by=['ID','Month']).groupby('ID').tail(3)
df2['Month'] = df['Month'].dt.strftime('%b-%y')
print(df2)