【发布时间】:2019-06-19 16:22:20
【问题描述】:
上下文
假设我有一个这样的 pandas-DataFrame:
>>> data.head()
values atTime
date
2006-07-01 00:00:00+02:00 15.10 0000
2006-07-01 00:15:00+02:00 16.10 0015
2006-07-01 00:30:00+02:00 17.75 0030
2006-07-01 00:45:00+02:00 17.35 0045
2006-07-01 01:00:00+02:00 17.25 0100
atTime 表示用作索引的时间戳的小时和分钟。我想将 atTime 列转置为二进制矩阵(使其稀疏也是一种选择),它将用作机器学习方法中的标称特征。
想要的结果应该是这样的:
>>> data.head()
values 0000 0015 0030 0045 0000
date
2006-07-01 00:00:00+02:00 15.10 1 0 0 0 0
2006-07-01 00:15:00+02:00 16.10 0 1 0 0 0
2006-07-01 00:30:00+02:00 17.75 0 0 1 0 0
2006-07-01 00:45:00+02:00 17.35 0 0 0 1 0
2006-07-01 01:00:00+02:00 17.25 0 0 0 0 1
正如预期的那样,当考虑到 atTime 中的所有值时,这个矩阵会大得多。
我的问题
我可以通过使用apply 的变通方法和使用时间戳来预先创建新列来实现所需的结果。
但是,pandas 中是否有内置选项(或通过 numpy,将 atTime 视为 numpy-array)可以在没有解决方法的情况下实现相同的功能?
【问题讨论】: