python - 以数字数据类型访问 datetime.time (00:00 - 23:59) 格式
问题描述
我有一个 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
时间 = 01:11 dtype:datetime.time
time.func()
71
我试图在 pandas 中搜索 datetime.time 格式是否有任何此类功能。但是,我找不到任何东西。
如果 pandas 中没有内置功能,另一种方法可能是编写一个将特定 datetime.time 映射到索引 (0-1440) 的函数。
解决方案
看看这是不是你想要的:
import pandas as pd
df = pd.DataFrame(['23:57', '10:39', '4:03'], columns=['Time'])
此数据框如下所示:
Time
0 23:57
1 10:39
2 4:03
然后我们可以在我们的列上应用这个函数:
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 将相同的函数应用于列的所有元素。
- 转换为日期时间格式(这里我使用 '%H:%M' 指定格式,以确保我们明确地将时间转换为小时和分钟。
- 通过使用 strftime 添加 ':00' 来使用额外的秒元素格式化时间,这是因为 pd.to_timedelta 需要 'hh:mm:ss' 格式的时间
- 然后我们得到timedelta的total_seconds()除以60得到分钟
- 转换为整数以获得最终格式。
推荐阅读
- python - 使用 tf.keras.models.load_model 恢复保存的模型时,Tensorflow 2.0+ 损失字典中的未知条目
- xml - 三星电视遥控器通过 UPnP
- html - Stargazer Table 未计算所有描述性值
- asp.net-mvc - 查找 HTMLHelper、URLHelper 和 AJAXHelper 类型的所有扩展方法
- python - 模型交换和联合仿真之间的 PyFMI 不同结果?
- python - 如何设置日志记录以登录我的时区?
- python - 尝试通过 uwsg 运行烧瓶应用程序时无法从 uwsgi 加载配置
- c# - Entity Framework Core 不会更新 ICollection
- vue.js - 无法使用 route.push,它错误“超出最大调用堆栈大小”
- matplotlib - lim 在函数 plt.axis(lim) 中的作用是什么?