Mar*_*kus 2 python dataframe pandas
语境
可以说我有一个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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
如预期的那样,当考虑atTime中的所有值时,此矩阵将更大。
我的问题
我可以通过使用apply和使用时间戳的变通办法来获得所需的结果,以便事先创建新的列。
但是,在pandas中是否有内置选项(或通过numpy,将atTime视为numpy-array)来实现相同目的而没有解决方法?
这是一个用例get_dummies:
df.join(pd.get_dummies(df.pop('atTime')))
values 0000 0015 0030 0045 0100
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47 次 |
| 最近记录: |