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

问题描述 投票:0回答:1

我有一个表,其中的列是

['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]

让最后 4 列

['sms-in', 'sms-out', 'call-in',  'call-out']
成为
sensor
的特征。让
T
N
分别代表时间戳轴和传感器ID 轴。

如何将 DataFrame 转换为形状为

(T, N, 4)
的 numpy 数组?我尝试了一种非常简单的方法来迭代收集行,这是非常低效的。有没有 Pandas API 或简洁的方法来完成这样的工作?

python pandas numpy
1个回答
0
投票

假设您的数据框名为 df。您可以执行以下操作:

array = df.values.reshape(T, N, 4)
© www.soinside.com 2019 - 2024. All rights reserved.