访问日期时间.time(00:00 23:59)数字数据类型格式

2024-04-20 14:28:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个24小时的平均数据,索引从00:00到23:59,间隔1分钟。每分钟对应1440个数据点。我想把这些时间戳映射到0-1440之间的数字索引(因为一天中有1440分钟)。在

例如,00:00->;0,00:01->;1,00:02->;2…23:58->;1339,23:59->;1440

time = 01:11 dtype:datetime.time
time.func()
71

我试图在pandas中为日期时间.time格式。但是,我找不到。在

如果pandas中没有为此内置的功能,另一种方法可能是编写一个映射特定日期时间.time索引(0-1440)。在


Tags: 数据方法gt功能pandasdatetime间隔time
2条回答

pandas没有本地的time数据类型,但它有timedelta:

In [11]: t = dt.time(10, 15)

In [12]: t.hour * 60 + t.minute  # total minutes (this may suffice!)
Out[12]: 615

In [13]: pd.to_timedelta((t.hour * 60 + t.minute), unit='m')
Out[13]: Timedelta('0 days 10:15:00')

注意:您可以从一开始就从timedelta开始工作(解析或计算):

^{pr2}$

看看你想要什么:

import pandas as pd
df = pd.DataFrame(['23:57', '10:39', '4:03'], columns=['Time'])

此数据框如下所示:

^{pr2}$

然后我们可以将此函数应用于专栏:

df['Time'].apply(lambda x: int(pd.to_timedelta(pd.to_datetime(x, format='%H:%M').strftime('%H:%M:00'), unit='m').total_seconds()/60))

其输出为:

0    1437
1     639
2     243
Name: Time, dtype: int64

这里我们使用apply将相同的函数应用于列的所有元素。在

  1. 转换为日期时间格式(在这里,我使用“%H:%M”指定了格式,以确保将时间显式转换为小时和分钟。在
  2. 通过使用strftime添加“:00”,用additional seconds元素格式化时间,这是因为pd.to_时间增量将需要“hh:mm:ss”格式的时间
  3. 然后我们得到timedelta的总_seconds(),除以60得到分钟
  4. 转换为整数以获得最终格式。在

相关问题 更多 >