【问题标题】:Pandas: Filter each client by different date熊猫:按不同日期过滤每个客户
【发布时间】:2018-08-23 05:47:05
【问题描述】:

我有不同客户的交易。

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

开始日期是每个客户开始使用该应用的时间。因此,在他们开始使用该应用程序之前,我有客户 frmo 的交易。每个客户都有不同的 StartDate。如何在每个客户开始使用该应用程序后过滤交易并仅获取交易。

在此示例中,我将只获得票 002、003 和 004,因为票 000 和 001 来自每个客户开始使用该应用程序之前的时间。

谢谢

【问题讨论】:

    标签: python pandas filter


    【解决方案1】:

    你可以使用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】:
      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]
      

      应该这样做

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-18
        • 2021-02-10
        • 2022-10-14
        • 1970-01-01
        • 2020-03-19
        • 2018-08-09
        相关资源
        最近更新 更多