将数据帧中的列转置为二进制矩阵

2024-10-02 04:25:49 发布

您现在位置:Python中文网/ 问答频道 /正文

上下文

假设我有这样一个数据帧:

>>> 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

正如预期的那样,在整理时间中的所有值时,该矩阵将大得多。你知道吗


我的问题

我可以通过使用apply和时间戳的变通方法来实现所需的结果,以便预先创建新的列。你知道吗

然而,熊猫是否有内置选项(或通过numpy,将阁楼简化为numpy阵列)来实现相同的功能而无需解决方法?


Tags: 数据方法numpy机器datadate选项时间
1条回答
网友
1楼 · 发布于 2024-10-02 04:25:49

这是^{}的一个用例:

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

相关问题 更多 >

    热门问题