如何将Pandas DataFrame转换为3D numpy数组?
我有一个表格,里面的列是 ['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
的特征。T
和 N
分别代表时间戳和传感器ID的轴。
我想把这个数据表转换成一个形状为 (T, N, 4)
的numpy数组。我尝试了一种非常简单的方法来逐行收集数据,但效率很低。有没有什么Pandas的API或者更简洁的方法可以做到这一点呢?
1 个回答
0
假设你的数据表叫做 df。你可以这样做:
array = df.values.reshape(T, N, 4)