微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

熊猫时间不是日期差异而不是作为对象

如何解决熊猫时间不是日期差异而不是作为对象

我想将时间戳列转换为 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。