如果日期在给定范围内,则从每个组中删除行

时间:2018-01-20 00:09:38

标签: python pandas date datetime group-by

给出如下的DataFrame:

dfx = pd.DataFrame({"ID":["A", "A", "C" ,"B", "B"], 
                    "date":["01/01/2014","01/31/2014","01/23/2014","01/01/2014","01/20/2014"]})

我想删除“重复”。 “重复”定义为行ID相同的行,但它们之间的“日期”小于30天。

删除“重复项”后生成的DataFrame预计显示为:

ID    date
A   01/01/2014
A   01/31/2014
C   01/23/2014
B   01/01/2014

1 个答案:

答案 0 :(得分:2)

  1. date转换为日期时间。
  2. dateID,找出连续行之间的差异
  3. timedelta差异中提取日期组件,并将其与30
  4. 进行比较
  5. 根据掩码
  6. 过滤dfx

    dfx[~pd.to_datetime(dfx.date).groupby(dfx.ID).diff().dt.days.lt(30)]
    
      ID        date
    0  A  01/01/2014
    1  A  01/31/2014
    2  C  01/23/2014
    3  B  01/01/2014