代码之家  ›  专栏  ›  技术社区  ›  Daniel Zapata

Pandas:按不同日期筛选每个客户端

  •  -1
  • Daniel Zapata  · 技术社区  · 6 年前

    Customer | Ticket |     Date    | StartDate
       A         000     08-12-2017   01-01-2018
       B         001     17-12-2017   01-01-2018
       A         002     05-01-2018   01-01-2018
       A         003     05-01-2018   01-01-2018
       B         004     17-02-2018   01-01-2018
    

    StartDate是每个客户开始使用应用程序的时间。所以,在客户开始使用应用程序之前,我有客户frmo的交易记录。每个客户都有不同的开始日期。如何筛选交易,并在每个客户开始使用应用程序后仅获取交易。

    在这个例子中,我将只得到票证002、003和004,因为票证000和001来自ebfore,每个客户都开始使用这个应用程序。

    谢谢

    2 回复  |  直到 6 年前
        1
  •  2
  •   Scott Boston    6 年前

    你可以用 query 方法:

    df.query('Date > StartDate')
    

    df[df['Date'] > df['StartDate']]
    

    输出:

      Customer  Ticket       Date  StartDate
    2        A       2 2018-05-01 2018-01-01
    3        A       3 2018-05-01 2018-01-01
    4        B       4 2018-02-17 2018-01-01
    
        2
  •  0
  •   VanTan    6 年前
    1. 确保数据和开始日期存储为日期:

      df.info()
      

    df.Date = pd.to_datetime(df.Date, format="%d-%m-%Y")
    df.StartDate = pd.to_datetime(df.StartDate, format="%d-%m-%Y")
    

    2: 比较列:

    df2 = df[df.StartDate < df.Date]
    

    应该可以的