我正在处理时间序列数据,我希望将其拆分为恒定长度的窗口并以列的形式并排堆叠。
长格式数据框的列为:
['index', 'Window', 'Message', 'Sensor', 'Concentration', 'set',
'windspeed', 'location']
index Window Message Sensor Concentration set windspeed location
0 0 0 1 Sensor 1 0.265072 0.0 16.0 1.0
1 1 0 1 Sensor 1 0.266650 0.0 16.0 1.0
2 2 0 1 Sensor 1 0.265072 0.0 16.0 1.0
3 3 0 1 Sensor 1 0.267598 0.0 16.0 1.0
4 4 0 1 Sensor 1 0.266335 0.0 16.0 1.0
“窗口”列的每个唯一值都具有传感器1,传感器2,传感器3和传感器4的200行。这使每个窗口长800行。我的目标是将这些窗口中的每个窗口堆叠为列,其中的值来自“浓度”,并且每一行依次对应于传感器的值。
这等效于(800,N)数组,其中N是窗口数。
我当前的解决方案是此数据透视表:
Rx_array = Rx_df.pivot_table(index=['Sensor','index'],columns=['Window','location'],values=['Concentration'])
使用%timeit进行测试可以得到:
%timeit Rx_array = Rx_df.pivot_table(index=['Sensor','index'],columns=['Window','location'],values=['Concentration'])
6.33 s ± 1.12 s per loop (mean ± std. dev. of 7 runs, 1 loop each)
但是由于我不得不多次运行此函数,所以pivot_table似乎比我希望的慢一些。我尝试了各种groupby()方法,但是不幸的是,直到我意识到做我想做的事情是多么简单之前,Pandas似乎总是令人困惑。
我的问题是,有人可以提出一种更有效的方法吗?