【问题标题】:Converting TimeStamp Series into minutes Series data || Python将时间戳系列转换为分钟系列数据 || Python
【发布时间】:2021-05-06 11:33:21
【问题描述】:

我正在寻找将时间戳系列数据转换为分钟数据的方法。

例如: 05:30:00 是 330 分钟 13:10:00 是 790 分钟 此外,如果日期发生变化并且时间戳是第二天,它会继续这个系列 比如 1440 + 次日分钟。

0   2021-02-01 06:20:40
1   2021-02-01 05:25:45
2   2021-02-01 06:35:40
3   2021-02-01 05:32:45
4   2021-02-01 05:37:30
5   2021-02-01 05:39:22
6   2021-02-01 06:51:40
7   2021-02-01 06:10:04
8   2021-02-01 06:28:57
9   2021-02-01 05:49:23

这是虚拟数据。 我不想循环每个元素并计算它,因为我的 DataFrame 中有多个时间戳列。

【问题讨论】:

    标签: python python-3.x dataframe datetime timestamp


    【解决方案1】:
    • 首先,确保 Series 的 dtype(有问题的 df 列)是 datetime
    • 现在减去您选择的日期,例如系列的第一个条目(您可以通过normalize()获得)
    • 将得到的timedelta 系列的total_seconds 除以60 得到分钟(如果您不想要小数分钟,您也可以对// 进行除法)

    例如:

    import pandas as pd
    
    s = pd.Series(pd.to_datetime(["2021-02-01 06:00:00", 
                                  "2021-02-01 09:00:00", 
                                  "2021-02-02 01:00:00"]))
    
    minutes = (s-s.iloc[0].normalize()).dt.total_seconds()/60
    
    minutes
    0     360.0
    1     540.0
    2    1500.0 # next day -> 1440 + time of current day
    dtype: float64
    

    【讨论】:

    • 像魅力一样工作..!你能解释一下 (s-s.iloc[0].normalize()) 这部分..吗?
    • @Brainiac:s.iloc[0] 采用系列的第一个元素。您可以将其更改为您需要的任何内容。 .normalize() 是一种时间戳方法,可将时间延迟到 00:00,即只给你日期。我从最初的系列中减去它,得到没有日期的时间(作为 timedelta)。
    猜你喜欢
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    • 2019-08-30
    • 2019-01-05
    • 1970-01-01
    • 2019-12-10
    相关资源
    最近更新 更多