我有一个24-HR平均数据,该数据从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
我试图搜索datetime.time格式的熊猫中是否有这样的功能。但是,我找不到任何东西。
如果熊猫没有为此内置的功能,则另一种方法可能是编写一个将特定datetime.time映射到索引(0-1440)的函数。
答案 0 :(得分:0)
pandas没有本地time
dtype,但是确实有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开始工作(无论是解析还是通过计算):
In [14]: pd.to_timedelta('10:15:00')
Out[14]: Timedelta('0 days 10:15:00')
答案 1 :(得分:0)
看一下这是否是您想要的:
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将相同的功能应用于列的所有元素。