【问题标题】:How to bin timestamps in python and assign labels如何在 python 中合并时间戳并分配标签
【发布时间】:2018-05-21 05:59:13
【问题描述】:

这是我的数据框:

ID : A, B, C, D, ...
Time: 2:44PM, 3:23AM, 5:00PM, 12:00AM, ...

我想做的是将时间归类为垃圾箱,例如:

12:00AM to 6:00AM: 0 
6:00AM to 12:00PM: 1 
12:00PM to 6:00PM: 2 
6:00PM to 12:00AM: 3

所以输出需要是:

ID: A, B, C, D, ...
T_flag: 2, 0, 2, 3, ...

我曾尝试使用pd.cut 和其他方法,但由于我是 Python 初学者,我无法通过任何方法找到所需的结果。

【问题讨论】:

    标签: python pandas datetime binning


    【解决方案1】:

    由于您想根据小时对数据进行分箱,最简单的方法是先转换为 24 小时格式,然后使用pd.cut

    df = pd.DataFrame({'ID': ['A', 'B', 'C', 'D'], 'Time': ['2:44PM', '3:23AM', '5:00PM', '12:00AM']})
    
    df['Time'] = pd.to_datetime(df['Time'], format='%I:%M%p').dt.hour
    df['T_flag'] = pd.cut(df['Time'], bins=np.array([-1,0,6,12,18,24]), labels=[3,0,1,2,3])
    

    这将给出:

    ID  Time  T_flag
    A    14        2
    B     3        0
    C    17        2
    D     0        3
    

    第一个 (-1,0] bin 是将 12:00AM 转换为标签 3 所必需的。将此值转换为 datetime 将给出 0,默认情况下将给它标签 0(第一个 bin (-1,6]include_lowest=True) .

    【讨论】:

      猜你喜欢
      • 2015-03-19
      • 2014-08-10
      • 2013-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-24
      相关资源
      最近更新 更多