【问题标题】:How to bucket/bin the dates in python?如何在 python 中存储/存储日期?
【发布时间】:2019-12-16 02:32:58
【问题描述】:

我有一列包含 16 天、256 天、450 天的值,它是通过减去 2 个日期列(例如 2010-11-10 - 2010-11-1)获得的。我想将日期分为 4 类(0-30 天为 1,30-90 天为 2,90-180 天为 3,大于 180 天为 4)。

我尝试将列转换为分类,然后尝试拆分(16 天为“16”和“天”),但出现错误。

  1. df_merged['Case_Duration'] = df_merged['DateOfResolution'] -df_merged['DateOfRegistration']

DateOfRegistration 和 DateOfResolution 是日期字段(例如 2010-11-1)

  1. df_merged['Case_Duration'] = df_merged['Case_Duration'].astype('category')

将“Case_Duration”列转换为类别

  1. df_Days = df_merged["Case_Duration"].str.split(" ", n = 1, expand = True)

拆分“Case_Duration”列值。 (例如 16 天 -> '16' 和 'days')

但是这一步会报错->只能使用带有字符串值的.str访问器,在pandas中使用np.object_dtype

期望的输出:

【问题讨论】:

    标签: python-3.x pandas


    【解决方案1】:

    在这里,我创建了一个名为 data 的 pandas df,在 ab 列具有随机时间戳(代表您的初始日期时间列)。 bucket 列有你想要的输出

    data_dic = {
        "a": ['2019-07-26 13:21:12','2019-07-26 13:21:12','2019-07-26 13:21:12','2019-07-26 13:21:12'],
        "b": ['2019-03-26 13:21:12','2019-05-26 13:21:12','2019-07-23 13:21:12','2019-02-26 13:21:12'],
    }
    data = pd.DataFrame(data_dic)
    
    data['a'] = pd.to_datetime(data['a'])
    data['b'] = pd.to_datetime(data['b'])
    
    data['bucket'] =  np.select( [(data['a'] - data['b']).dt.days< 31, (data['a'] - data['b']).dt.days< 91 ]   ,[1,2], 3)
    

    注意

    (data['a'] - data['b']).dt.days
    

    以天为单位计算时差

    【讨论】:

    • @Prateek Ramsinghani 如果您觉得这个答案有用,请考虑接受,非常感谢。
    • 非常感谢您,先生,它正在按照我的意愿完美运行。我是 stackoverflow 的初学者,它不允许初学者投票,请将此评论视为投票,非常感谢我!
    • @PrateekRamsinghani 非常感谢。我相信您不能赞成答案,但***您可以接受它***(作为提问者)。您可以在此处查看说明:stackoverflow.com/help/someone-answers
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    • 2012-03-18
    • 2012-12-27
    • 1970-01-01
    相关资源
    最近更新 更多