Pandas 时间(不是日期)差异而不是对象
Pandas Time (not Date) differences and not as object
我想将我的时间戳列转换为 ML 模型的回归器。我需要它是一个样条 - 一个连续变量(设计矩阵 X 中的一列),而不是一次性编码离散化间隔。
在我的原始数据中,我只有一个字符串形式的时间戳可供我使用,并且使用一些 pandas 技巧我能够得到我需要的东西。
但是,我在创建时差时遇到问题,我想计算从最小列的值到当前行的值的时间距离。
我在下面证明简单的例子:
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 行代码,但我无法自行破解它
你可以试试:
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
我想将我的时间戳列转换为 ML 模型的回归器。我需要它是一个样条 - 一个连续变量(设计矩阵 X 中的一列),而不是一次性编码离散化间隔。
在我的原始数据中,我只有一个字符串形式的时间戳可供我使用,并且使用一些 pandas 技巧我能够得到我需要的东西。
但是,我在创建时差时遇到问题,我想计算从最小列的值到当前行的值的时间距离。
我在下面证明简单的例子:
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 行代码,但我无法自行破解它
你可以试试:
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