如何将Pandas DataFrame转换为3D numpy数组?

-1 投票
1 回答
51 浏览
提问于 2025-04-14 15:27

我有一个表格,里面的列是 ['datetime', 'sensorid', 'sms-in', 'sms-out', 'call-in', 'call-out'],总共有10,000个传感器。理想情况下,每个时间戳应该有10,000行数据。不过,有时候某些时间戳可能会缺少一些传感器的数据,比如可能只有9998行。

这个表格可能看起来像这样:

                                sms-in   sms-out   call-in  call-out  
datetime            sensorid                                           
2013-10-31 23:00:00 1         0.223227  0.156787  0.160938  0.052275   
                    2         0.222201  0.147617  0.164946  0.054712   
                    3         0.221109  0.137855  0.169213  0.057306   
                    4         0.226198  0.183349  0.149327  0.045216   
                    5         0.205065  0.175393  0.139139  0.043455   
...                                ...       ...       ...       ...   
2013-11-01 22:50:00 9996      0.695404  0.440369  0.087566  0.310581   
                    9997      0.687958  0.429974  0.085995  0.243143   
                    9998      0.687958  0.429974  0.085995  0.256862   
                    9999      0.894907  0.518741  0.085995  0.230476   
                    10000     1.212911  0.638219  0.085995  0.090769   

[1439982 rows x 4 columns]

最后四列 ['sms-in', 'sms-out', 'call-in', 'call-out'] 是每个 sensor 的特征。TN 分别代表时间戳和传感器ID的轴。

我想把这个数据表转换成一个形状为 (T, N, 4) 的numpy数组。我尝试了一种非常简单的方法来逐行收集数据,但效率很低。有没有什么Pandas的API或者更简洁的方法可以做到这一点呢?

1 个回答

0

假设你的数据表叫做 df。你可以这样做:

array = df.values.reshape(T, N, 4)

撰写回答