0

我想将我的时间戳列转换为 ML 模型的回归量。我需要它是一个样条曲线 - 一个连续变量(设计矩阵 X 中的一列),而不是一个热编码离散间隔。

在我的原始数据中,我仅将时间戳作为一个字符串供我使用,并且使用一些熊猫技巧我能够得到我需要的东西。

但是,我在创建时间差时遇到了一个问题,我想计算从最小列的值到当前行的值的时间距离。

我在下面证明一个简单的例子:

import pandas as pd

# Create dataset
df = pd.DataFrame({"Time": ["071323", "081326", "101405", "111545", "124822", "131112"]})

df

df = df.assign(timestamp=lambda d: pd.to_datetime(d["Time"], format="%H%M%S").dt.time)

df.assign(time_trend_from_min = lambda d: d['timestamp'] - d['timestamp'].min())

# The values should be 1 hour, 0 minutes and 3 seconds etc.

我遇到的第二个问题是,当我只使用它进行转换时,它pd.to_datetime(d["Time"], format="%H%M%S").dt.time被存储为一种object类型,因此例如 patsy 会虚拟编码每个唯一值。我需要创建一维时间序列的差异,在 X 轴上我们有索引,在 y 轴上我们有与最小值的时间距离。

我确信它实际上需要 2 行代码,但是我无法自己破解它

4

1 回答 1

1

你可以试试:

s=pd.to_datetime(df['Time'],format="%H%M%S")
df['time_trend_from_min']=s-s.min()

的输出df

    Time    timestamp   time_trend_from_min
0   071323  07:13:23    0 days 00:00:00
1   081326  08:13:26    0 days 01:00:03
2   101405  10:14:05    0 days 03:00:42
3   111545  11:15:45    0 days 04:02:22
4   124822  12:48:22    0 days 05:34:59
5   131112  13:11:12    0 days 05:57:49
于 2021-07-18T14:34:01.890 回答