我想知道Pandas是否具有一些内置功能来获取随机的时间间隔(大约几小时)并将其转换为标准时间。代码示例和不起作用的尝试:
import pandas as pd
df = pd.DataFrame({'start': ['2018-09-04 01:12', '2018-09-04 02:11'],
'end' : ['2018-09-04 02:10','2018-09-04 03:20'],
'val' : [500, 600]})[['start','end','val']]
df[['start','end']] = df[['start','end']].apply(pd.to_datetime)
给我们:
start end val
2018-09-04 01:12 2018-09-04 02:10 500
2018-09-04 02:11 2018-09-04 03:20 600
和:
df = df.resample('1H', on = 'start', ).reset_index()
理想情况下(但不会)产生:
start end val
2018-09-04 01:00 2018-09-04 01:59 406.78
2018-09-04 02:00 2018-09-04 02:59 513.22
2018-09-04 03:00 2018-09-04 03:59 180.00
我可以编写一些hack程序来实现此功能,但认为Pandas将具有一些简单的功能来实现此目的。
答案 0 :(得分:0)
这不是一个足够常见的分配以保证其自身的方法。您正在对每个输入时间间隔进行简单的线性分配,该时间间隔是小时。在第一个间隔中,您总共记录了59分钟,因此每分钟的“值”是500/59(8.47+)。第二个是每分钟600/50(12.0)。
您可以使用相对简单的控制结构来完成此操作,尽管单个故障有点“麻烦”。创建新行时,请使用shift
运算符来寻址输入数据帧的当前行和先前行。您需要跟踪每一行的断点(小时数),并对两者进行线性计算。你的算术看起来像
TIME VALUE
1:00 - 2:00 (1:12 - 1:00) * 0 + (2:00 - 1:12) * 500/59
2:00 - 3:00 (2:11 - 2:00) * 500/59 + (3:00 - 2:11) * 600/50
3:00 - 4:00 (3:20 - 3:00) * 600/50 + (4:00 - 3:20) * 0
您可以将这些详细信息转换为所需的代码吗?