[英]Filtering a pandas data frame using a column of months to keep the most recent n months
我有一个以月份为一列的熊猫数据框。 我在下面给出了一个小样本:
df
ColA ColB ColC MonthCol
XY AA 12 Apr
XY BG 15 Apr
XY BG 16 Mar
XY AD 13 Feb
XA AA 15.5 Apr
XA AA 16.2 Mar
XA AA 13.1 Jan
XA AA 13 Feb
TX AC 11 Mar
TX AX 12 Feb
现在我想要的是过滤数据框并根据当前月份仅保留最近两个月的行。
我正在尝试如下排序的应用函数(保持 1 & 0 然后删除 0),但它不起作用:
def filtermon(mCol):
currmon = datetime.datetime.now().strftime("%m")
if currmon == mCol or currmon - mCol = 1
val =1
else:
val = 0
return val
之后,我从数据框中创建了一个新列:
df[filtCol] = df[MonthCol].apply(filtermon)
我们现在是四月,所以我们有,
mth = pd.to_datetime('today').month
mth
# 4
df[(pd.to_datetime(df['MonthCol'], format='%b').dt.month - mth).isin([0, -1])]
ColA ColB ColC MonthCol
0 XY AA 12.0 Apr
1 XY BG 15.0 Apr
2 XY BG 16.0 Mar
4 XA AA 15.5 Apr
5 XA AA 16.2 Mar
8 TX AC 11.0 Mar
不同的布局,通过使用date_range
+ isin
s=pd.date_range(end='2019-04-02',periods=2,freq='MS').strftime('%b')
df[df.MonthCol.isin(s)]
ColA ColB ColC MonthCol
0 XY AA 12.0 Apr
1 XY BG 15.0 Apr
2 XY BG 16.0 Mar
4 XA AA 15.5 Apr
5 XA AA 16.2 Mar
8 TX AC 11.0 Mar
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.