使用几个月的列过滤熊猫数据框以保留最近的n个月

时间:2019-04-02 23:30:09

标签: python pandas pandas-groupby

我有一个以月为一列的熊猫datframe。我在下面提供了一个小样本:

   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

现在我想要的是过滤datframe并仅基于当前月份保留最近两个月的行。

我正在尝试如下所述的apply函数(保持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  

之后,我从datframe创建了一个新列:

       df[filtCol] = df[MonthCol].apply(filtermon)

2 个答案:

答案 0 :(得分:1)

我们现在是四月,所以,

  constructor(
    public id:string,
    public name:string,
    public items: Items[]
  ){}
  export class Items (
  constructor(
    public name: string,
    public content: string
  ){} )

答案 1 :(得分:1)

使用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