【问题标题】:How do I drop duplicates and keep the last timestamp on pandas如何删除重复项并保留熊猫的最后一个时间戳
【发布时间】:2018-03-22 10:05:39
【问题描述】:

我想删除重复项并保留最后一个时间戳。要删除的重复项是 customer_idvar_name。这是我的数据

    customer_id  value   var_name     timestamp
    1            1       apple        2018-03-22 00:00:00.000        
    2            3       apple        2018-03-23 08:00:00.000
    2            4       apple        2018-03-24 08:00:00.000
    1            1       orange       2018-03-22 08:00:00.000
    2            3       orange       2018-03-24 08:00:00.000
    2            5       orange       2018-03-23 08:00:00.000

所以结果会是

    customer_id  value   var_name     timestamp
    1            1       apple        2018-03-22 00:00:00.000        
    2            4       apple        2018-03-24 08:00:00.000
    1            1       orange       2018-03-22 08:00:00.000
    2            3       orange       2018-03-24 08:00:00.000

【问题讨论】:

    标签: python pandas dataframe timestamp


    【解决方案1】:

    我认为需要sort_valuesdrop_duplicates

    df = df.sort_values('timestamp').drop_duplicates(['customer_id','var_name'], keep='last')
    print (df)
       customer_id  value var_name                timestamp
    0            1      1    apple  2018-03-22 00:00:00.000
    3            1      1   orange  2018-03-22 08:00:00.000
    2            2      4    apple  2018-03-24 08:00:00.000
    4            2      3   orange  2018-03-24 08:00:00.000
    

    如果不需要排序 - 顺序很重要:

    df = df.loc[df.groupby(['customer_id','var_name'], sort=False)['timestamp'].idxmax()]
    print (df)
       customer_id  value var_name           timestamp
    0            1      1    apple 2018-03-22 00:00:00
    2            2      4    apple 2018-03-24 08:00:00
    3            1      1   orange 2018-03-22 08:00:00
    4            2      3   orange 2018-03-24 08:00:00
    

    【讨论】:

    • 我没想到按时间戳排序睡觉:(
    • 解决方案 2 的复杂性是否比解决方案 I 高?
    • 我认为第二种解决方案应该慢一些。
    • 就我而言,要慢很多
    猜你喜欢
    • 2023-03-31
    • 2021-01-19
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    相关资源
    最近更新 更多